抛出Exception的用途是什么

mee*_*mee 4 java

有人可以解释我在java中使用throws Exception的用途是什么?它只是用于表示该方法将抛出指定的异常?调用方法需要捕获指定的异常吗?

因此,我们可以使用try-catch块来捕获异常,而不是抛出?

它与抛出有何不同?谢谢

ami*_*mit 11

Java使用显式异常处理 - 除了RuntimeExceptions 之外,[由方法本身抛出的每个异常,或者它调用的方法声明throws它] - 必须在方法签名中处理或声明.

它使安全性,因为当你调用你确切地知道可能发生的错误的方法,然后你就可以在本地处理与try/catch块或声明的一部分你的方法签名.

  • +1"您确切知道可能发生的运行时错误".是的,但是不幸的措辞,因为RuntimeExceptions和Errors正是不需要声明的内容.(尽管如此,没有更好的术语). (3认同)

Ale*_*exR 5

虽然@amit已经给出了非常好的答案,但我只想添加一些内容.

因此,我们可以使用try-catch块来捕获异常,而不是抛出?

我认为你的问题的这一部分没有得到回答.实际上,您在询问是否应该为异常定义"透明"的方法或捕获方法中抛出的异常.

答案是它取决于您的应用程序.通常,有两种情况需要在方法中捕获异常.

  1. 你有与异常有关的事情,所以你的流量取决于引发异常的事实.例如,如果您正在从文件读取并且发生IO错误,那么您将尝试再次从该文件中读取.
  2. 您不希望将应用程序的特定层上抛出的异常暴露给更高级别的层.在这种情况下,您可能会使用try block包装代码并将抛出的异常包装为其他级别异常:

    try {// some code} catch(IOException e){throw new ApplicationLevelException(e); }

在大多数其他情况下,您可能希望对异常透明,并在知道如何处理它们的单个点中捕获所有异常.例如,显示面向客户的错误消息.