2022-07-29 第六组 李俊琦 异常

今日重点

异常
编程界

学习内容

异常处理

下标越界
空指针
类型转换异常
.数字格式化
.算术异常(数学异常)

编程界:

除数为0
IO流(输入输出流)没有关闭
停电
当一个程序抛出异常时,抛异常后面的语句不再执行,类似于return的功能,终止方法的执行

异常的继承体系结构

最顶级的叫Throwable:错误,异常

Error:正常情况,不太可能出现的,

绝大多数Error都会导致程序处于非正常的状态下,很难恢复。外力作用下

Error是Throwable的子类,它是在java程序处理范围之外的。

Exception:Java语言中,将程序执行中发生的不正常的情况称之为异常

编译期异常:写代码时抛异常,如果编译期不解决,会一直报红

运行期异常:RuntimeExecption,运行时会抛异常,平时没事

public static void fun(int i,int j)throws MyException{
    if (j==0){
        throw new MyException("除数不能为0");
    }
    System.out.println(i/j);
}

自定义异常:

Java中异常机制虽然很完善,但是结合实际业务还差很多。

年龄出现负数需要自定义异常、电商搜索乱码需要自定义异常

怎么自定义异常?

所有的异常必须是Throwable的子类(大材小用,没必要)
如果要定义一个编译异常,需要继承Exception类,就是编译期异常
.如果要定义一个运行期异常,需要继承RuntimeExecption类

异常链:

一个异常被抛出去之后会被调用这个方法的方法捕获或抛出,异常会扩散。

只要说处理捕获异常就是try...catch

int num1=10;
int num2=0;
try{
    System.out.println(num1/num2);
}catch (Exception e){
    System.out.println("除数不能为0");
    e.printStackTrace();
}

finally关键字:

finally用来创建try代码块的后面执行的代码块
无论是否发生异常,finally代码块中的代码一定会执行。一般finally中的代码都是用来释放资源。

posted @ 2022-08-05 16:32  闹市闲人甲  阅读(20)  评论(0编辑  收藏  举报