必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-08-14 08:45:13来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

杨晓峰

最近在极客时间上订阅了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中System.setProperty()方法

/** 设置指定键对值的系统属性* setProperty (String prop, String value);* * 参数:* prop - 系统属性的名称。* value - 系统属

java web开发工具有哪些?

工欲善其事,必先利其器,好的开发工具能让程序猿们的Java web开发学习坐上高铁快车。那么今天小编就先整理一下感觉用来feel 倍爽的

java之接口实例化

1 接口无法进行实例化。不过接口可以通过匿名接口来操作。直接实现一个接口。但是是匿名的如:public interface Test1Interface {p

javascript 判断参数是否为非0整数数字或者整数数字字

javascript 判断参数是否为非0整数数字或者整数数字字符串的简单方法(小装逼) 我们来判断一个值是否为数字,可以把它转化为数字,看是

JAVA JXL API的详细使用

1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。作为办公文档,势必要涉及到的电子文

分享到:

栏目导航

推荐阅读

热门阅读