Java中抛出和抛出的区别?

use*_*594 8 java throw throws

任何人都能用一个例子清楚地说明Java异常处理中throw和throws之间的区别吗?我试过谷歌搜索但无法得出结论.请帮忙

Nir*_*ati 39

  1. throws子句用于声明异常,throw关键字用于显式抛出异常.

  2. 如果我们看到语法明智,那么throw后跟一个实例变量,throws后面跟着异常类名.

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

例如

throw new Exception("You have some exception")
throw new IOException("Connection failed!!")
Run Code Online (Sandbox Code Playgroud)

public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
Run Code Online (Sandbox Code Playgroud)
  1. 您不能声明多个例外throw.您可以声明多个异常,例如public void method()抛出IOException,SQLException.

  2. 检查的异常不能throw仅因为它被明确用于抛出特定异常而传播.检查异常可以传播throws.

异常传播:异常传播从一个方法传播到另一个方法,直到它被捕获为止.因此,如果a()调用b(),它调用c(),调用d(),并且如果d()抛出异常,则异常将从d传播到c到b传播到a,除非这些方法中的一个捕获例外. 什么是异常传播?


Sub*_*der 7

throw用于抛出实际Exceptionthrows声明它可能抛出的方法Exception.

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