最近在极客时间上订阅了Oracle首席工程师杨晓峰的Java核心技术36讲, 接下来会对每一课的学习:
- 记下学习笔记
- 有不懂的地方继续深入
- 一些思考或者总结。
下面从第一课开始,Exception和Error有什么区别。
Exception 和Error都继承自Throwable父类。 Error是指正常运行情况下,不太可能出现的情况,一旦Error发生一般都会导致程序处于非正常不可恢复的状态,比如OutOfMemoryError. 而异常是指程序正常运行过程中,可以预料到异常情况,应该是要被捕获并且被处理的。
那么问题来了,如何定义一个CheckedException?
1.如果继承自RuntimeException, 那么就是运行时异常。
2.继承自Exception,但是没有继承RuntimeException,那么就是CheckedException。
Try-Catch-Finally 的执行顺序:
- 一旦Try block里抛出异常, 程序逻辑跳转去Catch block, 捕获并处理异常
- 处理完异常之后,跳转去Finally语句,不再执行Try里面剩下的语句。 那如果Try block里还有return语句呢?也不再执行。
- Try 和 任意一个 Catch block都有return语句,finally都会执行。那执行顺序是怎么样的? try -> catch exption -> finally -> return