阿里一面的面试题异常和非受检异常的理解:嗯

你好,我是麦克

今天给大家分享一个阿里的面试题。

这个话题比较基础,但是确实难倒很多人。

关于“了解受检异常和未受检异常”

我们来看看普通人和专家的答案。

普通人:

嗯。 . . . . . .

运行异常不需要捕获的其他异常需要强制捕获,比如一些IO异常。

大师:

好的。

所谓已检查异常是指在编译时强制检查的异常。此类异常需要通过try/catch显式捕获,或者通过throws抛出,否则slave程序无法通过编译。

不是checked exception,意思是编译器不需要强制checked exception,也不需要显示这个异常来catch。

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

图片[1]-阿里一面的面试题异常和非受检异常的理解:嗯-唐朝资源网

Error用于表示程序的底层或硬件相关的错误,与程序本身无关,如常见的OOM异常。这种异常与程序本身无关,所以不需要检查,属于未经检查的异常。

Exception表示程序中的异常,可能是程序的不精确导致的,比如NullPointerException。

Exception派生自RuntimeException和其他异常,其中RuntimeException运行时异常也是一种未经检查的异常。

所以,除了Error和RuntimeException以及派生类,其他的异常都是检查异常,比如IOException、SQLException。

之所以在Java中设计一些强制检查异常,我认为主要是考虑到程序的正确性、稳定性和可靠性。

比如数据库异常、文件读取异常,这些异常是程序无法提前预测的,但是一旦出现问题,就会占用资源,程序就会出现问题。

所以我们需要主动捕捉这些异常。一旦出现问题,我们可以进行相应的处理,比如关闭数据库连接、释放文件流等。

© 版权声明
THE END
喜欢就支持一下吧
点赞104 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片