我正在尝试了解更多关于基本 Java 和不同类型的 Throwables 的信息,有人可以告诉我异常和错误之间的区别吗?
最佳答案
不应捕获或处理错误(极少数情况除外)。异常是异常处理的基础。 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
实际上有三个重要的子类别:
错误
- 出现了足够严重的错误,大多数应用程序应该崩溃而不是尝试处理问题,- Unchecked Exception (aka
RuntimeException
) - 通常是一个编程错误,例如NullPointerException
或非法参数。应用程序有时可以处理或从这个Throwable
类别中恢复——或者至少在 Thread 的run()
方法中捕获它,记录投诉并继续运行。 - Checked Exception (aka Everything else) - 应用程序应该能够捕获并有意义地处理其余的异常,例如
FileNotFoundException
和TimeoutException
...
关于java - 异常与错误的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912334/