目录
一、Throwable接口
直接子类:
二、Exception类
三、处理异常的方法
1、throw关键字,运行期异常处理
2、throws声明异常,编译期异常处理
多个异常一次捕获多次处理">3、try...catch()... -->多个异常一次捕获多次处理
4、try..catch()...finally...
四、Throwable类
五、子父类异常注意事项
六、自定义异常类
七、常见异常类
编译期异常
运行时异常RuntimeException
八、junit的单元测试
测试分类:
junit使用:白盒测试
步骤:
其他注解:
概念:异常本身就是一个类,产生异常就是抛出异常的对象.java处理异常的方式是中断.
一、Throwable接口
所有异常类的最高父类
直接子类:
①Error 指错误,不能处理,如内存溢出
②Exception 指异常 ,可以处理
二、Exception类
又分为编译期异常和运行期异常(RuntimeException类)
三、处理异常的方法
1、throw关键字,运行期异常处理
1、throw关键字,运行期异常处理
作用:用来抛出一个具体的异常类型
使用格式:throw new XXXException(“产生异常的原因”)
注意:
①throw关键字必须写在方法的内部.
②throw关键字后边创建的是运行期异常,默认交给jvm处理.
③throw关键字后面创建的是编译异常,必须处理这个异常,要么用throws或者try...catch
例子:Objects类中的requaireNull判断非空,简化代码
源码:public static
if(obj == null)//参数一是传递的对象,参数二是错误信息
throw new NullPointerException(e);
return obj;
}
2、throws声明异常,编译期异常处理
throws:异常处理的第一种方式,声明异常,交给别人处理.
作用:使用throws关键字处理异常时,会把异常对象声明抛出给方法的调用者,最终交给Jvm处理
使用格式:在方法声明时使用
修饰符 返回值类型 方法名(参数列表) throws XXXException,BBBException...
①throws关键字后边声明的异常必须是Exception或他的子类
②方法内部如果抛出了多个异常对象,那么throws后边必须声明多个异常.
④如果抛出的多个异常有父子关系,那么直接声明父类异常即可.
⑤调用一个声明抛出异常的方法,我们就必须处理这个异常.要么继续使用throws,最终交给jvm处
理,要么使用try...catch处理
3、try...catch()... -->多个异常一次捕获多次处理
try {
} catch (T e) {
}catch(T e){
}
注意事项;如果多个异常变量之间有子父类关系,子类必须写在前面.
try...catch()... -->多个异常一次捕获一次处理
try {
} catch (T e) {
}
注意事项;保证T为这些异常的父类即可,都可接收.
4、try..catch()...finally...
无论是否出现异常,finaly中语句都会执行。一般用于资源释放。
注意事项:如果一个方法中有多种情况多条返回语句,并且finally中有一句返回语句,那么不论什么情况,都将返回finally中的返回值。
知识补充:Finalize是方法名,此方法是在垃圾回收器将对象从内 存中清除之前做必要的清理工作。
四、Throwable类
3个返回异常信息的方法
- String getMessage() //返回异常的简短信息//买谁级
- String toString() //返回异常详细的字符串
- void printStackTrace //JVM打印异常默认方法,打印异常 信息最全面
五、子父类异常注意事项
- 如果父类抛出多个异常,子类重写父类方法时,抛出和父类相同异常或是父类异常的子类或者不抛出异常。
- 父类没有抛出异常,子类重写父类该方法时也不能抛出异常,此时子类产生异常,只能捕获处理,不能声明抛出.
六、自定义异常类
定义类,然后继承Exception
七、常见异常类
编译期异常
文件找不到异常:FileNotFoundException
类找不到的异常:ClassNotFoundException
sql异常:SQLException
IO流异常,一般是文件读写异常:IOException
运行时异常RuntimeException
空指针异常:NullPointerException //泡en特
数组下标越界异常:ArrayIndexOutOfBoundsException //帮子
数据类型转换异常:ClassCastException 例子:强制执行向下转型
八、junit的单元测试
测试分类:
- 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期 望值。
- 白盒测试:写代码,关注程序的具体执行流程.
junit使用:白盒测试
步骤:
- 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期 望值。
- 白盒测试:写代码,关注程序的具体执行流程.
junit使用:白盒测试
步骤:
步骤:
1、定义一个测试类,
测试包名格式:包名.text,测试类名格式:被测试的类名 + Test
2、 定义测试方法:
给方法加注解@Test,可以让该方法独立运行
注意事项:
方法名:test + 被测试的方法名
返回值:void
参数列表:空参
3、导入junit环境依赖
测试的结果进行断言处理:Assert.assertEquals(期望值,程序运行结果)
其他注解:
@Before 用于资源申请,在测试方法执行之前先执行.
@After 释放资源,在测试方法执行完后,自动执行该方法 //啊夫的



