最近在极客时间上订阅了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 from catch block。 Try block 的return语句只有当没有异常发生的情况下才会调用到,并且是在先运行了finally之后。
  4. In Summary: 无异常抛出,从Try return。有异常抛出,从catch return。但是之前都会执行finally。
  5. Catch block 还有异常抛出,finally会执行吗?  1) 在catch block 里抛异常前后都不能有return语句,compile不过 2)finally 会执行,之后抛出异常
  6. 如果Catch和finally都有return语句,从哪里return? 答案: 从finally return。

只有当下面两种情况是,finally代码块不会被执行:

  1. Try 或者catch block 里面调用了system.exit(),中止程序运行
  2. 致命错误: 虚拟机或者操作系统crash

NoClassDefFoundError 和 ClassNotFoundException 有什么区别

  1. 首先一个是Error,一个是异常
  2. NoClassDefFoundError通常发生在,当你想用new 创建一个新对象的时候,发现找不到这个对象所对应的类,这是JVM的错误,不应该捕获。
  3. ClassNotFoundException 发生在动态加载类的时候,比如说Class.forName, 只要保证要加载的类和其依赖的包都在classpath下即可。

异常处理代码比较繁琐并且千篇一律,应该尽量多使用1.7 引入的 try-with-resource 和multiple catch。try with resource 会在编译的时候自动生成相应的处理逻辑,比如自动按照约定俗成close那些实现了closeable or AutoCloseable的对象。 FYI,Closeable subclass AutoCloseable。 基本上,常见的InputStream, OutputStream, Reader都有实现 Closeable 接口。

异常处理的一些原则

  1. 不要捕获Exception,应该捕获特定异常
  2. 不要生吞异常!!! 看下面这段代码,问题出在哪里?

try {
                //业务代码
            } catch (Exception e) {
                e.printStackTrace();
            }

杨晓峰Java核心36讲学习笔记相关推荐

  1. 杨晓峰-java核心技术36讲(学习笔记)- 第1讲 | 谈谈你对Java平台的理解?

    杨晓峰-java核心技术36讲(学习笔记) 接下来我会分享杨晓峰-java核心技术36讲的学习笔记,内容较多,补充了其中一些牛人评论,相对详细(仅供个人学习记录整理,希望大家支持正版:https:// ...

  2. Java核心卷I学习笔记(二)

    第4章 对象与类 1.面向对象程序设计的相关基础概念 A.面向对象的程序设计:简称OOP,是当今主流的程序设计范型,这种方式程序由对象组成的,每个对象包含针对用户公开的特定功能和隐藏的实现部分:在OO ...

  3. Go语言核心36讲(Go语言实战与应用十二)--学习笔记

    34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...

  4. Go语言核心36讲(Go语言实战与应用十三)--学习笔记

    35 | 并发安全字典sync.Map (下) 我们在上一篇文章中谈到了,由于并发安全字典提供的方法涉及的键和值的类型都是interface{},所以我们在调用这些方法的时候,往往还需要对键和值的实际 ...

  5. 读Java核心技术36讲有感——谈谈对Java的理解,谈谈Exception和Error

    读过杨晓峰老师的36讲之后,想总结下自己的感想,写下来也有助于记忆,方便以后面试查阅和复习.题目所提到的话题本来是两讲,但是由于感想篇幅较短,所以合成一篇来写. 一.谈谈对Java平台的理解: 1.J ...

  6. 【总结】Java核心技术36讲知识点大纲

    前段时间在极客时间上购买了杨晓峰老师的<Java核心技术36讲>,趁着这段时间有空,对相关知识点做了一个整体的大纲,也对自己所掌握的Java基础进行了一个复习和梳理,若想深入学习,可以购买 ...

  7. 【总结】Java核心技术36讲知识点大纲(转载)

    Java核心技术36讲知识点总结大纲 1 Java平台的理解 Java的特性,解释运行和编译运行 2 Exception 和 Error 有什么区别 理解Java的异常体系的设计,Throwable ...

  8. MySQL实战45讲学习笔记

    文章目录 MySQL实战45讲-学习笔记 01 基础架构:一条SQL查询语句是如何执行的? mysql逻辑架构 连接器 查询缓存 分析器 优化器 执行器 02 日志系统:一条SQL更新语句如何执行 r ...

  9. JAVA基础与高级学习笔记

    JAVA基础与高级学习笔记 /记录java基础与高级,除了较简单的内容,没有必要记录的没有记录外,其余的都记录了/ java初学者看这一篇就够了,全文 6万+ 字. JAVA基础 java会出现内存溢 ...

最新文章

  1. Http Tunnel 小记
  2. 4.8 这和大脑有什么关系-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
  3. python水印_用python来给图片加水印
  4. python正则表达式知识点
  5. 聊聊storm的PartialKeyGrouping
  6. linux之which命令
  7. vue-cli打包后的思索--代码优化
  8. Linux下Weblogic创建域方法和步骤
  9. 接口不能被实例化的吗?接口引用是什么?
  10. mpvue 初始化微信小程序
  11. java hibernate状态_Hibernate对象的三种状态
  12. 想成为大数据分析师必须知道的这些事儿(文末福利)
  13. Gradle下载 Jar 包
  14. 软件开发工作量/费用估算
  15. 史上最全的黑苹果系统「MacOS」安装教程,小白也能秒掌握!
  16. 安卓手机当电脑摄像头(DroidCam网盘及使用方法)
  17. 美国人工智能总动员:特朗普后知后觉,华府和硅谷心急如焚
  18. word页码不连续怎么办
  19. 华为机试题python版节选(基础编程题)
  20. CAD制图软件中的沿线布置功能如何使用?

热门文章

  1. 我平时总结的几个Python编程小技巧
  2. linux设置共享文件夹和删除共享文件夹(vmware:linux-windows共享文件夹)
  3. Linux kernel: USB driver编写入门(二)
  4. EIGRP理论详解及基础实验
  5. 苹果笔的代替笔有哪些?Ipad好用电容笔测评
  6. 苹果cms后台路径怎么修改
  7. C | C++定义全局变量的方法
  8. 抖音上超火的3D立体动态相册表白特效(29)
  9. BlockingQueue drainTo()
  10. 【AI创造营】鬼畜小视频