3 回答
TA贡献1808条经验 获得超4个赞
不应该捕获或处理错误(除了最罕见的情况)。例外是异常处理的基础。该Javadoc中解释说得好:
Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题。大多数此类错误都是异常情况。
查看一些子类Error
,获取他们的一些JavaDoc注释:
AnnotationFormatError
- 当注释解析器尝试从类文件中读取注释并确定注释格式错误时抛出。AssertionError
- 抛出表示断言失败。LinkageError
- LinkageError的子类表明一个类对另一个类有一些依赖性; 然而,后一类在前一类的编译后发生了不相同的变化。VirtualMachineError
- 抛出此异常表示Java虚拟机已损坏或已耗尽其继续运行所需的资源。
实际上有三个重要的子类别Throwable
:
Error
- 出现严重错误的大多数应用程序应该崩溃而不是试图解决问题,未经检查的异常(又名
RuntimeException
) - 通常是编程错误,例如NullPointerException
非法参数。应用程序有时可以处理或从此Throwable
类别中恢复- 或者至少使用Thread的run()
方法捕获它,记录投诉并继续运行。Checked Exception(又名其他所有内容) - 应用程序应该能够捕获并有意义地对其余部分执行某些操作,例如
FileNotFoundException
和TimeoutException
...
TA贡献1880条经验 获得超4个赞
如您所知,错误往往表示您的应用程序已结束。它通常无法从中恢复,并且应该导致VM退出。除了在退出之前可能记录或显示和适当的消息之外,不应该捕获它们。
示例:OutOfMemoryError - 您可以执行的操作不多,因为您的程序无法再运行。
例外通常是可以恢复的,即使没有,它们通常只是意味着尝试的操作失败,但您的程序仍然可以继续。
示例:IllegalArgumentException - 将无效数据传递给方法,以便方法调用失败,但不会影响将来的操作。
这些都是简单的例子,仅有例外情况就有另外丰富的信息。
添加回答
举报