异常概念
程序运行期间,出现的不正常情况,导致jvm终止程序运行
注意:java是面向对象语言,异常本身也是一个类,当出现异常的时候,就会创建该异常类的对象并抛出该异常对象
创建异常对象,该对象就会包装异常的类型,异常的信息,异常的位置等信息
异常体系
Throwable类:是 Java 语言中所有错误或异常的超类\父类
Error类: 表示错误,无法通过代码进行纠正,只能事先避免,相当于:绝症,例如: 栈内存溢出错误,服务器宕机,数据库奔溃…
Exception类:表示异常,可以通过代码进行纠正,相当于: 感冒…
异常分类
编译异常:在编译期间,出现的异常,导致程序无法通过编译,这就是编译异常,除了RuntimeException及其子类都是编译异常
运行异常:在运行期间,才出现的异常,编译期间不处理,编译可以通过,这就是运行异常,
RuntimeException及其子类都是运行异常
异常的产生和处理
throw new 异常类名(参数):throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ // 可以抛出一个,也可以多个}:throws关键字将异常标识出来, 表示当前方法不处理异常,而是提醒给调用者, 让调用者来处理…最终会到虚拟机,虚拟机直接结束程序,打印异常信息。
捕获处理异常try…catch:
try{
编写可能会出现异常的代码
}catch(异常类型 e){
处理异常的代码
//记录日志/打印异常信息/继续抛出异常}
finally{
无论异常是否发生,都会执行这里的代码(正常情况,都会执行finally中的代码,一般用来释放资源)}
执行步骤:
1.首先执行try中的代码,如果try中的代码出现了异常,那么就直接执行catch()里面的代码,执行完后,程序继续往下执行
2.如果try中的代码没有出现异常,那么就不会执行catch()里面的代码,而是继续往下执行
异常注意事项:
1.运行时异常被抛出可以不处理。即不捕获也不声明抛出。
2.如果父类的方法抛出了多个异常,子类覆盖(重写)父类方法时,只能抛出相同的异常或者是他的子集。
3.父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
4.当多异常分别处理时,捕获处理,前边的类不能是后边类的父类
5.在try/catch后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收。
6.多个异常使用捕获又该如何处理呢?
多个异常分别处理。
多个异常一次捕获,多次处理。
多个异常一次捕获一次处理。
一般我们是使用一次捕获多次处理方式,格式如下:
try{编写可能会出现异常的代码}
catch(异常类型A e){
当try中出现A类型异常,就用该catch来捕获.处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}catch(异常类型B e){
当try中出现B类型异常,就用该catch来捕获.处理异常的代码
//记录日志/打印异常信息/继续抛出异常}
异常
最新推荐文章于 2024-10-17 08:15:00 发布