1、理论性质

Exception:为代码运行后,出现空指针、除0等可控的人为逻辑异常,在被try-catch或在方法上抛出异常后,程序任能继续运行。

Error:为代码运行后,出现栈溢出等不可控系统级别异常,出异常后,不可捕捉,程序一般为崩溃状态。

2、处理Exception的两种方法

2.1 throws Exception

在方法传参变量后加上throws Exception ,且调用该方法的方法也要抛出异常。

该方式将处理异常这一步骤交给了jvm来处理,但是这样我们失去了程序的掌控性,以及代码的维护变难。
一般情况下,不建议使用throws Exception

public class Example02 {

    public static void main(String[] args) throws Exception {

        example02.test02();

    }

    public void test02 () throws Exception{
        System.out.println("test02开始");
        test03();
        System.out.println("test02结束");
    }

    public void test03() throws Exception{
        throw new Exception("test03异常");
    }

}

2.2 try-catch

在try后写上要捕捉异常的代码,在catch后写上捕捉到异常后的处理方法,finally后写的代码无论是否捕捉到异常都会执行。
try-catch将处理异常的对象由jvm转变成了我们,我们可以在可能抛出异常的地方,对异常进行捕捉,进行针对性处理。
try后面也可以跟随多个catch,这些catch分别捕捉不同的异常,进行专门处理。

public class Example02 {

    public static void main(String[] args) throws Exception {

        example02.test01();

    }

    public void test01(){

        System.out.println("test01开始");
        try {
            throw new Exception("test01异常");
        } catch (NullPointerException  e){
            System.out.println();
        }catch (Exception e) {
            System.out.println(e.getMessage());
        }finally {
            System.out.println("test01 finally");
        }
        System.out.println("test01结束");

    }

}

3、try-catch使用注意

catch后面的传参为捕捉到的异常类型,可以写多个catch对异常针对性处理,但要注意catch后的异常类型,均要继承Exception类,且异常捕捉范围越大的异常类型要放越后面。
若需捕捉的异常不止一个,不可以放在一个try-catch中,因为在一个try-catch中只能捕捉到一个异常。
catch和finally中的代码并没有异常捕捉,其中若出现异常会交给jvm处理,在catch和finally若可能存在抛出异常问题,可以使用try-catch嵌套,但不易嵌套过多。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐