面向对象 异常
文章目录
1、异常
什么是异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。生活中,根据不同的异常进行相应的处理,而不会就此中断我们的生活
2、Java中如何进行异常处理
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
try{
可能会报错的代码
}catch(Exception e){
异常处理代码
}
try{
可能会报错的代码
}catch(Exception e){
异常处理代码
}finally{
不管程序是否报错都执行
}
3、常见的异常类型
异常类型 | 说明 |
---|---|
Exception | 异常层次结构的父类 |
ArithmeticException | 算术错误情形,如以零作除数 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 尝试访问 null 对象成员 |
ClassNotFoundException | 不能加载所需的类 |
IllegalArgumentException | 方法接收到非法参数 |
ClassCastException | 对象强制类型转换出错 |
NumberFormatException | 数字格式转换异常,如把"abc"转换成数字 |
4、多重catch块
引发多种类型的异常
1.排列catch 语句的顺序:先子类后父类
2.发生异常时按顺序逐个匹配
3.只执行第一个与异常类型匹配的catch语句
7、小总结
-
try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一
-
面试题:try-catch块中存在return语句,是否还执行finally块? 如果执行,说出执行顺序
8、声明异常
如果在一个方法体中抛出了异常,如何通知调用者?
throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
方式1:调用者处理异常
方式2:调用者继续声明异常
main()方法声明的异常由Java虚拟机处理
9、抛出异常
除了系统自动抛出异常外,有些问题需要程序员自行抛出异常
使用throw抛出异常throw与throws
throw | throws |
---|---|
生成并抛出异常 | 声明方法内抛出了异常 |
位于方法体内部,可作为单独语句使用 | 必须跟在方法参数列表后面,不能单独使用 |
抛出一个异常对象,且只能是一个 | 声明抛出异常类型,可以跟多个异常 |
10、自定义异常
当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类使用自定义异常的步骤
使用自定义异常的步骤:
1、定义异常类
2、编写构造方法,继承父类的实现
3、实例化自定义异常对象
4、使用throw抛出
11、异常链
A方法调用B方法时,B方法却抛出了异常。那A方法继续抛出原有的异常还是抛出一个新异常呢?
抛出原有的异常
A方法与B方法进行了关联,不便于代码的修改和扩展
抛出新的异常
异常链创建了新的异常但却保留了原有异常的信息
12、异常处理原则:
1、异常处理与性能
2、异常只能用于非正常情况
3、不要将过于庞大的代码块放在try中
4、在catch中指定具体的异常类型
5、需要对捕获的异常做处理
13、总结
- 异常分为Checked异常和运行时异常
Checked异常必须捕获或者声明抛出
运行时异常不要求必须捕获或者声明抛出
-
try-catch-finally中存在return语句的执行顺序
-
finally块中语句不执行的情况
异常
Checked异常必须捕获或者声明抛出
运行时异常不要求必须捕获或者声明抛出
-
try-catch-finally中存在return语句的执行顺序
-
finally块中语句不执行的情况
-
throw和throws关键字的区别