【java】异常与错误

Throwable包括Error和Expected。

Error

Error错误是程序无法处理的,由JVM产生并抛出的。

举例:StackOverflowError \ ThreadDeath

Expected

Expected异常包括两类,即受检异常(非运行时异常)和非受检异常(运行时异常),异常往往是由程序的逻辑错误引起的。异常可以由程序自行处理。

受检异常:在编辑器中可以检测到,无需运行。

举例:ClassNotFoundException

非受检异常:运行后才可以检测到的异常。

举例:ArrayIndexOutOfBoundsException \ 空指针

程序处理异常的方式
① try - catch - finally

原本的程序设计是:一旦出现异常,那么将不再向下执行程序。

但是如果提前将可能出现异常的程序用try - catch包裹,那么程序即使出现问题也会继续向下执行。finally是不管上边正确还是错误,都会执行的程序。

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5];
        try {
            System.out.println("----------这是一条语句----------");
            arr[5] =  1;
            System.out.println("这条语句不会执行");
        } catch (Exception e){
            System.out.println("出现异常了");
        } finally {
            System.out.println("不管是否出现异常都会执行");
        }
    }
}
运行结果

② 抛出

抛出是让程序的调用程序处理异常,这并不能解决问题,只是指出了问题所在。

public class Main {
    public static void main(String[] args) {
        try {
            run();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("try-catch虽然报错,但仍然可以运行");
    }
    public static void run() throws ClassNotFoundException {
        fly();
    }
    public static void fly() throws ClassNotFoundException {
        Class.forName("MainX");
    }
}
报错但存在输出
public class Main {
    public static void main(String[] args) throws ClassNotFoundException {
        run();
        System.out.println("仅报错,并不能输出");
    }
    public static void run() throws ClassNotFoundException {
        fly();
    }
    public static void fly() throws ClassNotFoundException {
        Class.forName("MainX");
    }
}

报错且不存在输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值