java - 异常与错误的区别

标签 java exception throwable

我正在尝试了解更多关于基本 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) - 应用程序应该能够捕获并有意义地处理其余的异常,例如 FileNotFoundExceptionTimeoutException...

关于java - 异常与错误的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912334/

相关文章:

java - 有没有人将信息从 byteArray 解析为整数和字符串?

exception - urllib 异常 http.client.BadStatusLine

ios - 什么可能导致 Swift sharedInstance 返回上的 EXC_BREAKPOINT

Java异常处理案例

java - 为方法创建异常

java - 如何通过 UCanAccess 访问远程计算机上的数据库文件?

java - Eclipse 中 Java Web 应用程序的结构

java - 从通用列表java中删除项目?

python - 使用 Unittest Python 进行测试

java - 为什么 catch block 可以是 Object 类型?