2022年2月16日

今天原神2.5更新,急得我要命

异常处理机制

抛出异常
捕获异常

异常处理的关键字:
try、catch、finally、throw、throws

package CaptureAndThrow;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        try{//监控区域
            System.out.println(a / b);
        }catch(ArithmeticException e){
            System.out.println("程序出现异常,变量b不能为0");
        }finally{
            System.out.println("finally");
        }
        /*
        解释一下
        try代码块监控程序有无异常
        如果捕获了ArithmeticException异常,则执行catch代码块
        finally善后工作,无论如何finally代码块都会执行

        try、catch是必要的,finally可以不要
        但是对于IO、资源、scanner等,最后是需要用finally关闭的
         */

        //可以catch好几个异常
        try {
            new Test().a();
        }catch (StackOverflowError e){
            //或者写Throwable,这是最高级别的异常
            System.out.println("栈溢出异常");
        }catch (Exception e){
            System.out.println("catch Error");
        }catch (Throwable e){
            System.out.println("catch Throwable");
        }finally {
            System.out.println("finally");
        }
    }
    public void a(){b();}
    public void b(){a();}
}

catch多个异常时,最大的异常Throwable写在最下面
在这里插入图片描述
在这里插入图片描述

快捷键

对于可能产生异常的代码,Ctrl + Alt + T,会自动生成异常处理机制
在这里插入图片描述

package CaptureAndThrow;

public class Demo_1 {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        try {
            System.out.println(a / b);
        } catch (Exception e) {
            e.printStackTrace();//打印错误的栈信息
        } finally {
        }
    }
}

可以主动抛出异常,一般用于方法中

package CaptureAndThrow;

public class Demo_1 {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        new Demo_1().test(a,b);
    }
    public void test(int a, int b){
        if(b == 0)
            throw new ArithmeticException();
        System.out.println(a / b);
    }
}

运行结果:
在这里插入图片描述

自定义异常

在这里插入图片描述

图源B站狂神
自定义异常:

package CustomException;

//自定义的异常类
public class MyException extends Exception{
    //传递数字。如果数字>10就抛出异常
    private int detail;
    public MyException(int a){
        this.detail = a;
    }
    //然后再写toString方法
    @Override
    public String toString(){
        return "MyException{" + detail + '}';
    }
}

测试类:
写测试类时会遇到以下情况
在这里插入图片描述
有两种解决方式:
红色箭头是把异常抛到方法中去
蓝色箭头是捕获异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果:

在这里插入图片描述

JavaSE总结

JavaSE完结撒花!!!!
接下来考虑学习JavaEE、GUI、多线程和网络编程,从1月19日到2月16日一共28天,我写了23篇博客,xdm我坚持下来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值