JAVA课堂笔记20(异常)

第三章:异常
一、异常的理解
1. 异常:程序运行过程中出现的非正常的情况。
2. 异常的分类:
(1) 父类型:Throwable ,位于 java.lang包中
(2) 子类Error -》错误
(3) 子类:Exception-->异常
二、异常分类
1. 父类:Throwable ,位于 java.lang包中,java中的所有错误或是异常的父类
(1) 具有构造方法:
public Throwable(){} ->无参数的构造方法
public Throwable(String message){} ->具有字符串类型参数的构造方法(参数代表异常信息)
(2) 成员方法:
void printStackTrace():获取异常详细信息,用于开发人员进行程序调试
String getMessage() :获取字符串类型的异常信息
2. 子类:Error,代表错误,用于指示合理的应用程序不应该试图捕获的严重问题
(1) 现象:内存空间不足,或是Java虚拟机方法调用时栈溢出(java.lang.StackOverflowError)
(2) 特点:遇到这样的错误,程序中无法处理。
3. 子类Exception,代表异常,分为运行时异常和非运行异常
(1) 运行时异常(RuntimeException)
a. RuntimeException类或是它的子类,都是运行时异常
b. 特点:编译过程中编译器不会检测,运行时报错
c. 处理:可以处理,也可以不处理(可以通过编码规范进行避免)
d. 常见:
java.lang.ArrayIndexOutOfBoundsException(数组下标越界)
java.lang.IndexOutOfBoundsException(集合下标越界)
java.lang.StringIndexOutOfBoundsException(字符串下标越界)
java.lang.NullPointerException(空指针异常)
java.lang.ClassCastException(类型转换异常)
java.lang.NumberFormatException(数字格式转换异常)
(2) 非运行时异常:
a. RuntimeException 没有任何继承关系的异常,都是非运行时异常
b. 特点:编译过程中编译器就直接检测的错误,编译直接报错
c. 处理:必须处理(否则,编译报错,没有运行机会)
d. 注意:编译报错的可能:
i. 语法错误
ii. 非运行时异常,一旦出现,需要借助 异常处理语法解决
三、异常产生原因
1. 自动产生异常
(1) 自动产生异常:运行程序时,遇到错误的代码,自动产生异常,程序自动终止。
(2) 结果:因异常程序被中止
2. 手动产生异常
(1) 语法:throw new 异常类名("异常信息");
(2) 位置:定义在方法内部
(3) 结果:类似于return,终止结束当前函数
四、异常的传递
异常传递: 按着方法的调用链方向反方向传递,直至JVM,最终导致程序终止。
五、异常的处理
1. 消极处理异常(外抛异常)
(1) 关键字:throws
(2) 位置:方法的声明位置
方法修饰 返回值类型 方法名(形参)throws 异常类名,异常类名2{}
(3) 结果:消极处理异常,只是推卸责任的一种处理方式,程序最终还是因为异常而被终止
(4) 作用:消极处理异常可以解决非运行时异常编译不通过的问题
(5) 注意:利用父类型的异常解决子类型的异常
2. 积极处理异常
(1) 位置:应用在 方法的内部
(2) 语法:
try{
// 可能出现异常的语句
}catch(异常类名 e){
// 异常出现时执行的代码
}
(3) try后面可以同时定义多个catch结构,从上往下依次进行匹配
(4) 利用多态,使用父类型处理子类型的异常,子类型必须定在父类前面
(5) finally:最终的,定义的代码不管有没有异常肯定被执行
六、自定义异常类
1. 定义一个类继承 异常类
(1) 定义异常类如果为运行时异常,则需要继承 RuntimeException
class CheckedPasswordException extends RuntimeException{}
(2) 定义异常类如果为非运行时异常,则需要继承 Exception
class CheckedPasswordException extends Exception{}
2. 提供 两个构造方法
(1) 一个无参数的构造方法
(2) 有参数的构造方法:带有字符串类型参数的构造方法
public CheckedPasswordException(String message){
super(message);
}
// 自定义异常类
class CheckedPasswordException extends Exception{
public CheckedPasswordException(){}
public CheckedPasswordException(String message){
super(message);
}
}
七、方法的覆盖【终极版 -- 企业面试重点+企业级开发重点-细节处理+考试重点】
1. 子类的方法名、形参列表、返回值类型 和 父类相同
2. 子类的访问修饰符和父类相同或是比父类更宽
3. 子类不能抛出比父类更多、更宽的异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值