有人能解释一下 Java 中 throws Exception 的用途吗?这只是用来指示该方法将抛出指定的异常吗?调用该方法需要捕获指定的异常吗?
那么,我们可以使用 try-catch 块来捕获异常,而不是使用 throws 吗?
它与 throw 有什么不同?谢谢。
有人能解释一下 Java 中 throws Exception 的用途吗?这只是用来指示该方法将抛出指定的异常吗?调用该方法需要捕获指定的异常吗?
那么,我们可以使用 try-catch 块来捕获异常,而不是使用 throws 吗?
它与 throw 有什么不同?谢谢。
Java使用显式的异常处理——除了运行时异常(RuntimeException
),每个抛出的异常(由该方法本身或者它调用的方法声明了throws
)必须在方法签名中被处理或声明。
这种方式可以提供安全性,因为当你调用一个方法时,你知道可能会出现哪些错误,然后可以通过try/catch
块进行本地处理,或作为你的方法签名的一部分声明。
throws
关键字表示该方法可能会抛出异常。
当您认为调用者想要进行自己的异常处理时,应使用此关键字;否则,您应该使用try-catch块并在catch块中返回指定的错误值,例如indexOf()
(从数组中)返回-1而不是抛出异常。
虽然已经有了一个适当的答案,但我想补充一点,每当使用try-catch块时,都会为处理异常创建一个新线程。当主线程和try-catch块线程执行的活动发生冲突时,这可能会导致问题。
因此,在API方法中声明抛出异常并使用throws子句处理使用API的应用程序中的异常总是更好的选择。
使用try-catch块是最后的选择!;)
throws
,那么这个方法意味着它可能会向调用它的方法抛出一个Exception
。public void method1() throws Exception {
...
throw new Exception();
...
}
public void method2() {
try {
method1();
catch(Exception e) {
...
}
}
如果您没有告诉一个方法如何throw
Exception
,那么您必须使用try
和catch
来处理它。
有关异常处理的更多信息,请参阅文档: http://docs.oracle.com/javase/tutorial/essential/exceptions/
main(String[])
也可以使用throws Exception
。 - Peter Lawrey