异常和错误之间的差异

2022-08-31 06:19:08

我正在尝试了解有关基本Java和不同类型的可抛出物的更多信息,有人可以让我知道异常和错误之间的区别吗?


答案 1

不应捕获或处理错误(除非在极少数情况下)。异常是异常处理的面包和黄油。Javadoc很好地解释了这一点:

Error 是 Throwable 的一个子类,它指示合理的应用程序不应尝试捕获的严重问题。大多数此类错误都是异常情况。

看看 的一些子类,取一些 JavaDoc 注释:Error

  • AnnotationFormatError- 当注释解析器尝试从类文件中读取注释并确定注释格式不正确时,将引发。
  • AssertionError- 抛出以指示断言已失败。
  • LinkageError- LinkageError的子类表示一个类对另一个类有某种依赖性;然而,后一类在前一类编译后发生了不兼容的变化。
  • VirtualMachineError- 抛出以指示 Java 虚拟机已损坏或已耗尽其继续运行所需的资源。

实际上有三个重要的子类别:Throwable

  • Error- 一些足够严重的事情出了问题,大多数应用程序应该崩溃而不是试图处理问题,
  • 未检查的异常(又名) - 通常是编程错误,例如 a 或非法参数。应用程序有时可以处理或从此类别中恢复 - 或者至少在Thread的方法中捕获它,记录投诉,然后继续运行。RuntimeExceptionNullPointerExceptionThrowablerun()
  • 已检查异常(也称为所有其他内容) - 应用程序应能够捕获其余部分并有意义地执行某些操作,例如和...FileNotFoundExceptionTimeoutException

答案 2

这张幻灯片通过@georgios-gousios展示了Java的异常层次结构,简明扼要地解释了Java中错误和异常之间的区别。

Java Exception Hierarchy