0
点赞
收藏
分享

微信扫一扫

JAVASE -- 12 -- 异常

12 — 异常

1、异常快捷键:ctrl + Alt + t

2、异常主要分两大类:

(1)Error(错误):Java虚拟机无法解决的严重问题;比如:JVM系统内部错误、资源耗尽等情况;

(2)Exception 主要分两大类:运行时异常(程序运行时,发生的异常),编译异常(编译时,编译器检查出的异常);

12-1 异常体系图 - 掌握

在这里插入图片描述

总结:

1、异常分两大类:运行时异常和编译时异常;

2、运行时异常 —— java.lang.RunTimeException类 和 其子类;

3、运行时异常,可以不处理,但是在编写程序时一定要尽量避免运行时异常;

4、编译时异常,是编译器要求必须处理的异常;

12 -2 常见的5种运行时异常

1、 NullPointerException 空指针异常
2、 ArithmeticException 数学运算异常
3、 ArrayIndexOutOfBoundsException 数组下标越界异常
4、 ClassCastException 类型转换异常

  • 当试图将对象强制转换为不是实例的子类时,抛出该异常;

5、NumberFormatException 数字格式不正确异常[]

12 - 3 异常处理

1、两种处理方式:

(1)try — catch – finally

程序员在代码中捕获发生的异常,自行处理;

(2)throws

将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM

2、示意图

try — catch — finally

try{
    代码 ---> 可能有异常
} catch(Exception e){
    //捕获到异常
    //1、当异常发生时;
    //2、系统将异常封装成 Exception 对象e,传递给 catch;
    //3、得到异常对象后,我们自己处理;
    //4、注意:如果没有发生异常 ----> catch代码块不执行;
}finally{
    //1、不管try代码块是否有异常发生,始终要执行 finally代码块
    //2、所以,通常将释放资源的代码,放在 finally代码块
}

throws处理机制图

在这里插入图片描述

12 - 3 -1 try – catch 块处理异常

1、try – catch ,try代码块中包含可能出错的代码,catch代码块用于处理 try块中发生的异常;

2、无 finally代码块,语法也可通过;

3、注意细节

(1)如果异常发生了,则异常发生后面的代码不会执行,直接进入到 catch块;

(2)如果异常没有发生,则顺序执行try代码块中的代码,不会进入到catch代码块;

(3)如果希望不管是否发生异常,都执行某段代码(如:关系连接,释放资源等),则可以添加 finally代码块;

(4)可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,如果发生异常,只会匹配一个 catch;

(5)可以进行 try – finally 配合使用,这种用法相当于没有捕获异常,因此程序会直接退出。应用:就是执行一段代码,不管是否发生异常,都必须执行某个业务逻辑。

12 - 3 -2 throws异常处理

1、如果一个方法中(方法中的语句执行)可能生成某种异常,但是并不能确定如何处理这种异常,则该方法应显式的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理;

2、在方法声明中,用 throws语句可以声明抛出的异常列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类;

3、使用细节

(1)对于编译类型,程序中必须处理,比如:try — catch 或者 throws;

(2)对于运行时异常,程序中如果没有处理,默认就是 throws方式处理;

(3)子类重写父类的方法时,对抛出异常的规定:

  • 子类重写的方法,抛出的异常类型要么和父类抛出的异常类型一致,要么为父类抛出的异常类型的子类;

(4)在 throws 过程中,如果有方法 try — catch 处理异常,就不必 throws;

12 - 3 - 3 自定义异常

1、当程序中出现了某个“错误”,但该错误信息没有在 Throwable 子类中描述处理,这个时候可以自己设计异常类,用于描述错误信息;

2、自定义异常步骤:

(1)定义类:自定义异常类名 extends Exception / RuntimeException

(2)如果继承 Exception ,属于编译异常;

(3)如果 继承 RuntimeException ,属于运行异常(一般自定义异常,都继承 RuntimeException

throw 和 throws 区别

意义位置后面跟的东西
throws异常处理的一种方式方法声明处异常类型
throw手动生成异常对象的关键字方法体重异常对象
举报

相关推荐

Javase——异常

异常—javaSE

JAVASE基础(异常)

(9) javaSE --异常

JavaSE之异常处理

JavaSE基础——异常机制

JavaSE基础-异常处理

0 条评论