当前位置: 移动技术网 > IT编程>开发语言>Java > Java中运行时异常与受检异常的区别

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

2020年07月27日  | 移动技术网IT编程  | 我要评论

面试中遇到一条题,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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网