第七章 异常的捕获及处理
一、异常的基本概念:
①定义:异常时导致程序中断的一种指令流,所有的异常
以类和对象的形式存在
②异常处理机制的优点:易于使用、可自行定义异常类、
处理抛出的异常同时又不会降低程序运行的速度
③异常处理格式: try{
//有可能出现异常的语句
}catch(异常类异常对象){
//编写异常的处理语句
}[ catch(异常类异常对象){
//编写异常的处理语句
}…]
[finally{
//一定会运行到的程序代码
}]
④常见异常类型:
数组越界异常:ArrayIndexOutOfBoundException
数字格式化异常:NumberFormatException
算术异常:ArithmeticException
⑤异常类的继承结构:
(父类) Throwable (子类1) Exception
(子类2) Error
⑥异常信息的输出方式:
1、System.out.println(异常对象);
2、异常对象 .printStackTrace();
⑦Java的异常处理机制:
1、一旦产生异常,则首先会产生一个异常类的实例
化对象
2、在try语句中对此异常类对象进行捕捉。
3、产生的异常对象与catch语句中的各个异常类型
进行匹配,如果匹配成功,则执行catch语句中
的代码
⑧利用向上转型的概念,可以让所有的异常对象都使用
Exception接收(所有捕获范围小的异常必须放在捕获范
围大的异常之前)
二、throws与throw关键字
①throws:
1、用throws声明的方法表示此方法不处理异常,
而交给方法调用处进行处理。而且在调用处必须
使用try…catch进行处理
2、使用格式:
public 返回值类型方法名称 (参数列表…) throws 异常类{}
3、主方法原则上也可以使用throws,但最好不要用
②throw:
1、直接使用throw关键字人为地抛出一个异常,抛
出时直接抛出异常类的实例化对象即可
2、throw一般都与try…catch、throws联合使用
3、finally语句块中尽可能不要出现throw和return
三、Exception类与RuntimeException类
①继承关系: Exception (上一个是下一个的父类)
RuntimeException
IllegalArgumentException
NumberFormatException
②Exception在程序中必须使用try…catch进行处理
③RuntimeException可以不使用try…catch进行处理,但如
果有异常产生,肯定会导致程序中断执行。(最好还是用
try…catch进行处理)
四、自定义异常类:只需要继承Exception类即可
五、断言:
①断言就是肯定某一个结果的返回值是正确的,如果最终
此结果的返回值是错误的,则通过断言检查会提示错误
信息
②定义格式: assert boolean 表达式;
assert boolean 表达式:详细的信息;
③运行格式:javac 类名.java
java –ea 类名
④断言的使用:
1、虽然断言的返回值是boolean值,但是并不能将
其作为条件判断语句
2、断言虽然有检查运行结果的功能,但是在开发中
并不提倡使用断言