我正在尝试了解有关基本 Java 和不同类型的 Throwable 的更多信息,有人可以让我了解异常和错误之间的区别吗?
最佳答案
不应捕获或处理错误(除非在极少数情况下)。异常是异常处理的基础。 Javadoc解释得很好:
An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.
看看 Error
的几个子类,摘录他们的一些 JavaDoc 评论:
-
AnnotationFormatError
- 当注释解析器尝试从类文件读取注释并确定注释格式错误时抛出。 -
AssertionError
- 抛出该异常表示断言失败。 -
LinkageError
- LinkageError 的子类表明一个类对另一个类有一定的依赖性;然而,在前一个类编译后,后一个类发生了不兼容的变化。 -
VirtualMachineError
- 抛出该异常表示 Java 虚拟机已损坏或已耗尽继续运行所需的资源。
Throwable
确实有三个重要的子类别:
-
Error
- 出现了足够严重的错误,大多数应用程序应该崩溃而不是尝试处理问题, - 未经检查的异常(又名
RuntimeException
)- 通常是编程错误,例如NullPointerException
或非法论证。应用程序有时可以处理此问题或从中恢复Throwable
类别 - 或者至少在线程的run()
中捕获它方法,记录投诉并继续运行。 - 已检查异常(又名其他所有异常)- 应用程序应能够捕获其余异常并对其进行有意义的操作,例如
FileNotFoundException
和TimeoutException
...
关于java - 异常和错误之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516892/