《疯狂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里面修复;不知道怎么处理异常,在定义该方法的时候声明抛出该异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值