Java中的 throw 和 throws 之间的区别?

2022-09-03 03:27:23

任何人都可以通过示例清楚地说明Java异常处理中抛出和抛出之间的区别吗?我尝试过谷歌搜索,但无法得出结论。请帮忙


答案 1
  1. throws子句用于声明异常,关键字用于显式引发异常。throw

  2. 如果我们看到语法明智,则后面跟着一个实例变量,后面跟着异常类名。throwthrows

  3. 关键字在方法主体内部用于调用异常,子句用于方法声明(签名)。throwthrows

例如

throw new Exception("You have some exception")
throw new IOException("Connection failed!!")

抛出

public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
  1. 不能使用 声明多个例外。你可以声明多个异常,例如 public void method()throws IOException,SQLException。throw

  2. 检查的异常不能传播,因为它被显式用于引发特定异常。可以使用 来传播已检查的异常。throwthrows

异常传播:异常在调用堆栈上从一个方法传播到另一个方法,直到它被捕获。因此,如果 a() 调用 b(),哪个调用 c(),哪个调用 d(),如果 d() 引发异常,则异常将从 d 传播到 c 再到 b 再到 a,除非这些方法之一捕获了异常。什么是异常传播?


答案 2

throw用于抛出实际值并声明它可能引发的方法。ExceptionthrowsException

public int findMax(int[] array) throws Exception{
    if(array==null)
       throw new NullPointerException(...);
    ...
}