-4

我知道 javac 强制程序员处理需要由方法抛出或使用 try-catch/finally 处理的检查异常。它不会阻止程序员抛出未经检查的异常。

我也知道我们为什么要做 try-catch/finally 并理解为什么 java 会检查某些异常集。

但我无法理解以下内容:

Q1)为什么方法应该“抛出”异常。我们从中得到什么好处?我认为,使用“抛出”的方法抛出或不抛出同样的事情正在发生!!!

Q2)当方法“抛出”异常时,内部会发生什么?

Q3)我认为“错误”与“异常”的分类不同,只是为了强调它们“当它们发生时,程序员方面不会做太多事情”,但我们可以“抛出”“try-catch/finally”对他们来说像往常一样,其他一切也与“例外” *s相同。如果我错了,请纠正我。

请帮我。先感谢您。

4

1 回答 1

1

我们开始吧:

Q1)为什么方法应该“抛出”异常。我们从中得到什么好处?

一个方法应该提到当它不能处理它抛出的异常时它会抛出一个异常(该方法必须指定这种行为,以便方法的调用者可以保护自己免受该异常的影响)。

Q2) 当方法“抛出”异常时,内部会发生什么?

当方法抛出异常时,控制权转移给方法的调用者,以及调用者是否有必要的 catch 块来处理方法抛出的异常。如果调用者有一个 catch 块来处理异常,那么将处理异常并且程序继续。如果调用者没有必要的方法来处理向其抛出的异常,则该异常将由默认异常处理程序处理

对于您的第三个问题,请阅读完整参考书中的此块:

所有异常类型都是内置类 Throwable 的子类。因此,Throwable 位于异常类层次结构的顶部。紧接 Throwable 下面是两个子类,它们将异常划分为两个不同的分支。一个分支由 Exception 领导。此类用于用户程序应捕获的异常情况。这也是您将创建自己的自定义异常类型的子类。Exception 有一个重要的子类,称为 RuntimeException。这种类型的异常是为您编写的程序自动定义的,包括除以零和无效的数组索引等内容。

另一个分支的顶部是 Error,它定义了在正常情况下不会被您的程序捕获的异常。Java 运行时系统使用 Error 类型的异常来指示与运行时环境本身有关的错误。堆栈溢出就是此类错误的一个示例。本章不会处理 Error 类型的异常,因为这些异常通常是为了响应程序通常无法处理的灾难性故障而创建的。

于 2014-02-12T04:24:13.653 回答