面试题: 请你说一下对受检异常和非受检异常的理解?

也就是说,除了 RuntimeException 和其子类,以及error和其子类,其它的所有异常都是 checkedException

面试考察点#

考察目的: 异常的设计,在程序开发中时非常重要的。好的异常设计能够合理清晰的反馈程序的问题,提供排查思路。同时,还能够很好的处理资源回收问题。所以作为有经验的程序员,必须要了解异常,以及异常的差异和特性。

考察人群: 工作3年以上,3年左右一般都会参与项目中部分核心代码的编写。

背景知识分享#

在Java中,所有的异常都继承自java.lang.Throwable,Throwable有两个直接子类,Error和Exception,如图所示。

Untitled

Throwable 类是 Java 语言中所有错误(errors)异常(exceptions)的父类。只有继承于Throwable类或者其子类的异常才能够被抛出.

下面分别解释一下这些异常以及特性。

Error错误

Error通常是程序无法处理的错误,这些错误大多数与代码编写者执行的操作无关,并且它们是无法被捕获的,因为它们在应用程序的控制和处理能力之外,比如。

  1. OutOfMemoryError, 内存溢出,比较常见的错误,是值内存空间不足以再提供新对象的分配。
  2. StackOverflowError,栈溢出。