杨晓峰Java核心36讲学习笔记

本文是Oracle首席工程师杨晓峰《Java核心技术36讲》的学习笔记,主要探讨Exception与Error的区别,如何定义CheckedException,Try-Catch-Finally的执行顺序,NoClassDefFoundError与ClassNotFoundException的差异,以及Java异常处理的最佳实践。

最近在极客时间上订阅了Oracle首席工程师杨晓峰的Java核心技术36讲, 接下来会对每一课的学习:

  1. 记下学习笔记
  2. 有不懂的地方继续深入
  3. 一些思考或者总结。

下面从第一课开始,Exception和Error有什么区别。

Exception 和Error都继承自Throwable父类。 Error是指正常运行情况下,不太可能出现的情况,一旦Error发生一般都会导致程序处于非正常不可恢复的状态,比如OutOfMemoryError. 而异常是指程序正常运行过程中,可以预料到异常情况,应该是要被捕获并且被处理的。

 

那么问题来了,如何定义一个CheckedException?

1.如果继承自RuntimeException, 那么就是运行时异常。

2.继承自Exception,但是没有继承RuntimeException,那么就是CheckedException。

 

Try-Catch-Finally 的执行顺序: 

 

 

 

 

 

  1.  一旦Try block里抛出异常, 程序逻辑跳转去Catch block, 捕获并处理异常
  2. 处理完异常之后,跳转去Finally语句,不再执行Try里面剩下的语句。 那如果Try block里还有return语句呢?也不再执行。
  3. Try 和 任意一个 Catch block都有return语句,finally都会执行。那执行顺序是怎么样的? try -> catch exption -> finally -> return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值