为了账号安全,请及时绑定邮箱和手机立即绑定

异常和错误之间的差异

异常和错误之间的差异

BIG阳 2019-09-18 19:29:06
我正在尝试更多地了解基本Java和不同类型的Throwables,有人能告诉我异常和错误之间的区别吗?
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

不应该捕获或处理错误(除了最罕见的情况)。例外是异常处理的基础。该Javadoc中解释说得好:

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

查看一些子类Error,获取他们的一些JavaDoc注释:

  • AnnotationFormatError - 当注释解析器尝试从类文件中读取注释并确定注释格式错误时抛出。

  • AssertionError - 抛出表示断言失败。

  • LinkageError - LinkageError的子类表明一个类对另一个类有一些依赖性; 然而,后一类在前一类的编译后发生了不相同的变化。

  • VirtualMachineError - 抛出此异常表示Java虚拟机已损坏或已耗尽其继续运行所需的资源。

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

  • Error - 出现严重错误的大多数应用程序应该崩溃而不是试图解决问题,

  • 未经检查的异常(又名RuntimeException) - 通常是编程错误,例如NullPointerException非法参数。应用程序有时可以处理或从此Throwable类别中恢复- 或者至少使用Thread的run()方法捕获它,记录投诉并继续运行。

  • Checked Exception(又名其他所有内容) - 应用程序应该能够捕获并有意义地对其余部分执行某些操作,例如FileNotFoundExceptionTimeoutException...


查看完整回答
反对 回复 2019-09-18
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

//img1.sycdn.imooc.com//5d82152100016c8706220422.jpg

查看完整回答
反对 回复 2019-09-18
?
慕村225694

TA贡献1880条经验 获得超4个赞

如您所知,错误往往表示您的应用程序已结束。它通常无法从中恢复,并且应该导致VM退出。除了在退出之前可能记录或显示和适当的消息之外,不应该捕获它们。

示例:OutOfMemoryError - 您可以执行的操作不多,因为您的程序无法再运行。

例外通常是可以恢复的,即使没有,它们通常只是意味着尝试的操作失败,但您的程序仍然可以继续。

示例:IllegalArgumentException - 将无效数据传递给方法,以便方法调用失败,但不会影响将来的操作。

这些都是简单的例子,仅有例外情况就有另外丰富的信息。


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信