欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中运行时异常与受检异常的区别

程序员文章站 2022-10-03 16:04:49
面试中遇到一条题,Java中运行时异常与受检异常的区别。特此记录一下。所有的异常都集成自java.lang.Throwable,它有两个直接的子类:Error、Exception。Error错误:JVM内部出现的严重问题,无法恢复;Exception异常:普通的问题。通过合理的处理,程序还可以回到正常执行流程。要求编程人员要进行处理;RuntimeException:也叫非受检异常(unchecked exception).这类异常是编程人员的逻辑问题。应该承担责任。Java编译器不进行强制要求处...

面试中遇到一条题,Java中运行时异常与受检异常的区别。特此记录一下。

所有的异常都集成自java.lang.Throwable,它有两个直接的子类:Error、Exception。

  1. Error错误:JVM内部出现的严重问题,无法恢复;
  2. Exception异常:普通的问题。通过合理的处理,程序还可以回到正常执行流程。要求编程人员要进行处理;
  3. RuntimeException:也叫非受检异常(unchecked exception).这类异常是编程人员的逻辑问题。应该承担责任。Java编译器不进行强制要求处理。 也就是说,这类异常再程序中,可以进行处理,也可以不处理;
  4. 受检异常(checked exception):这类异常是由一些外部的偶然因素所引起的。Java编译器强制要求处理。也就是说,程序必须进行对这类异常进行处理。

举例:

  • 非受检异常:NullPointerExceptionClassCastExceptionArrayIndexsOutOfBoundsExceptionArithmeticException(算术异常,如除0溢出)
  • 受检异常:ExceptionFileNotFoundExceptionIOExceptionSQLException

在Effective Java中对异常的使用给出了以下指导原则:

  • 不要将异常处理用于正常的控制流(设计良好的API不应该强迫它的调用者为了正常的控制流而使用异常)
  • 对可以恢复的情况使用受检异常,对编程错误使用运行时异常
  • 避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常的发生)
  • 优先使用标准的异常
  • 每个方法抛出的异常都要有文档
  • 保持异常的原子性
  • 不要在catch中忽略掉捕获到的异常

本文地址:https://blog.csdn.net/Allen_Adolph/article/details/107587968