任何人都能用一个例子清楚地说明Java异常处理中throw和throws之间的区别吗?我试过谷歌搜索但无法得出结论。请帮忙
答案 0 :(得分:39)
throws
子句用于声明异常,throw
关键字用于显式抛出异常。
如果我们看到语法明智,则throw
后跟一个实例变量,throws
后跟异常类名称。
在方法体内部使用关键字throw
来调用异常,并在方法声明(签名)中使用throws
子句。
例如
抛出
throw new Exception("You have some exception")
throw new IOException("Connection failed!!")
<强>引发强>
public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
您无法使用throw
声明多个例外。您可以声明多个例外,例如public void method()抛出IOException,SQLException。
已检查的异常不能仅使用throw
传播,因为它明确用于抛出特定异常。已检查的异常可以使用throws
传播。
异常传播:异常传播从方法到方法,向上传递调用堆栈,直到被捕获为止。因此,如果a()调用b(),它调用c(),调用d(),并且如果d()抛出异常,则异常将从d传播到c到b传播到a,除非这些方法中的一个捕获例外。 what is exception propagation?
答案 1 :(得分:7)
throw
用于在可能引发Exception
的方法上投掷实际的throws
和Exception
声明。
public int findMax(int[] array) throws Exception{
if(array==null)
throw new NullPointerException(...);
...
}
答案 2 :(得分:0)
public void someMethod(List<Foo> someList) throws SomeException {
if (someList.isEmpty()) throw new SomeException();
}