《疯狂java讲义》读书笔记(五):异常处理

《疯狂java讲义》读书笔记(五):异常处理

说点题外话,推荐下孙红雷的新剧,新世界,貌似还可。

1.异常捕获的时候,先捕获小异常,再捕获大异常。

2.之前在笔记里提到垃圾回收机制时说过,其只回收堆内存中对象所占用的内存,并不回收任何物理资源。使用finally可以回收一些物理资源,比如说在try块中使用了数据库连接、网络连接和磁盘文件,就可以用finally回收。

3.try块在异常处理语法结构中是必须的,没有try,后面的catch和finally是不可能出现的。finally和catch是可选的,但是catch和finally至少出现一个,也可以同时出现。

4.如果在catch块中执行到了return语句,那么通常来说程序会立即结束该方法,但是现在不会了,它一定会先执行finally块里的代码。如果在catch块中使用System.exit(1)来退出虚拟机,那么会发现,finally失去执行的机会。所以总结下,除非在try、catch中调用了退出虚拟机的方法,否则不论如何,finally总会被执行。

5.一旦在finally中使用了return或者throw语句,将会导致try、catch中的return和throw语句失效。因为遇到try、catch中的return和throw语句,并不会结束该方法,还是去寻找是否包含finally,如果没有立即执行return/throw,方法结束,如果包含finally的话,那肯定是要执行finally的,finally执行完了,才会回过头来执行try、catch力的return或者是throw。显然,finally里用了return或者throw,方法就会终止,那就不会再回过头来执行try、catch里的语句了。

6.throws声明抛出只能在方法签名里使用,可以抛出多个异常类,使用了throws语句抛异常,那就不需要用try…catch捕获了。使用throws的话,异常是交给JVM处理的,一旦程序遇到throws抛出的异常,那么JVM就会打印相关信息,然后结束程序。

7.只有Java语言有Checked异常,其他语言没有,因为Java认为Checked异常都是可以被修复的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会错误,无法通过编译。对于Checked异常的处理方式可以有2中,知道怎么处理,直接用try…catch捕获,然后在catch里面修复;不知道怎么处理异常,在定义该方法的时候声明抛出该异常。

发布了58 篇原创文章 · 获赞 5 · 访问量 6274

猜你喜欢

转载自blog.csdn.net/weixin_40992982/article/details/103979102
今日推荐