文章目录
回顾
- 深克隆: 不仅只克隆了实现克隆接口的对象本身,也会把克隆对象中存在的关联对象一起克隆。
- finalize(): 每个对象上都有,且由垃圾回收器调用的。当垃圾回收器发现一个对象长时间没有引用,就会去调用该对象的finalize方法进行回收。
- 日期时间对象Date掌握获取当前系统时间的功能,在JDK1.1之后推荐使用Calender类。
- Date 和Calender可以互相转化,getTime()Calender转Date,setTime(),Date转Calender。
- SimpleDatefomat辅助类(创建对象时, 有参构造放的是格式yyyy年MM月dd日 HH时mm分ss秒
1.异常处理
1.1 常见异常
- java.lang.NullPointerException 空指针异常
- ArrayIndexOutOfBoundsException 数组异常
- java.lang.AirthmeticException 算术异常
- java.lang.ClassCasExcepiton 类型转换异常
1.2 try-catch-finally
1.2.1 try-catch
try{
//监视的代码块
}catch(异常){
//捕获异常
}finally{
// 不管是否有异常发生,finally语句块中的语句始终保证被执行
//finally语句块儿主要用于解决资源泄露问题
}
例如
try{
System.out.println(((String)null).length())
//null调用方法会报错
}catch(Exception e){
System.out.println(e);//空指针异常
}
注意: try的后面可以有多重catch,但是注意层级关系: 越高越往下写。① try catch
②try 多个catch
③try...finally
④try catch finally
1.2.2 finally块
①finally前有return,finally依然被执行②finally块前有System.exit(0)语句,finally不被执行
1.3 throw 和 throws
1.3.1 throw
- 手动引发异常,发生在
方
法
体
中
\color{#ff0036}{方法体中}
方法体中(我认为满足特定的条件就是发生异常了);
1.3.2 throws(抛出异常)
- throws 用在 方 法 声 明 处 \color{#ff0036}{方法声明处} 方法声明处,声明该方法可能发生的异常类型。
- 一个方法如果使用了throws,那么
调
用
\color{#ff0036}{调用}
调用该方法时,编译期会提醒
必
须
处
理
\color{#ff0036}{必须处理}
必须处理这些异常,否则编译错误;
异常一直向上抛,最顶点就是JVM
throws后可以声明多种类型,用逗号隔开即可;
1.4 自定义异常
1.4.1 意义:
- 为了能够标记项目中的异常事件,需要用throw抛出异常;
- 如果抛出的是API中的标准异常,那么很有可能与 API中方法混淆,因此需要自定义异常。
- 项目组根据业务需求定义业务异常,对团队开发非常有意义。
1.4.2 声明自定义异常
-
创建个自定义异常类:
- 自定义异常非常简单,只要继承API 中任意一个标准异常类即可;
- 多数情况下,继承,Exception类,也可以选择继承。其他类异常。
- 一般不写其它方法,只重写必要的构方法。
-
自定义异常类的使用
结果
**处理:**使用throws声明自定义异常类,使用try-catch-finally处理
1.5 异常小结
异常可以处理不影响程序运行,错误只能修改代码。
检查异常:不可预见的,码代码的时候,就报红提示
运行时异常: 可以预见的,编译器不报红,运行起来就报错。
错误: 错误不是异常,而是脱离程序控制的问题。
所有的异常全继承于java.lang.Exception类
-
分类: 编译和运行
-
Exception 异常: 一般是逻辑或者数据内容
-
所有语言都需要异常处理,针对的是运行期。
-
处理异常的意义: 预会准备,避免程序因异常而终止。
-
Exception有四个子类
- SQLException 数据库异常
- ClassNotFountdException 找不到类
- IOException 流异常
- RuntimeException 运行期异常
-
运行异常的常见子类
- ArthmeticException 算术异常
- lllegalArgumentException 方法收到不合法的参数
- NullPointerExoption 不能加载所需类
-
异常处理
try{
//监视错误
}catch(Exception e){
//异常处理
}finally{
// 总是执行
// try或catch中有return也不能阻止finally运行
// System.exit(0) 可以阻止
}
1.6 面试题
- Exception和Error
- 都继承于Throwable
- Exception 异常 : 可以被控制,是运行过程中的不正常事件,可以被异常处理机制处理,程序能够运行下去。
- Error 错误 jvm底层问题,不能被处理,强制终止程序,需要改代码才能修改的错误。
- try catch finally的区别
- try 监视错误
- catch 捕获错误
- finally 总会执行 finally是可选的,且必须,和try塔配使用。
- final finalize finally的区别
- final 最终的 修饰变量的时候值不能被修改且必须初始化;修饰方法时不能被重写;修饰类时不能被继承;
- finalize 每个对象都有,当垃圾回收器发现一个对象长时间没有引用那么就会调用对象上的 finalize方法。
- finally块 必须搭配try使用,无论try中是否有异常,都会执行。只有System.exit(0)会阻止finally的运行。
2.断言
2.1 断言的作用
JDK1.4之后,增加断言机制。用来调试程序,不在生产环境下使用。
2.2 断言的使用
assert 布尔表答式 : 错误信息;