java中为什么把Checked Exception翻译成受检的异常?

6.Checked Exception(受检的异常) 

马克-to-win:为什么我大胆的把Checked Exception翻译成受检的异常?因为这类异常,编译器检查发现到它后会强令你catch它或throws它(我们之后讲),马克-to-win:而相对于本节前面我们提到的各种比如ArithmeticException,都是unchecked exception(不受检)的异常,unchecked异常都是RuntimeException或者它的子类。马克-to-win:换句话:编译器检查发现到它以后,什么都不管,也什么都不做,直接放行。见下面的例子:

例:1.6.1-

public class Test {
    void m1_mark_to_win() {
        throw new RuntimeException("divide by 0");
    }
    public static void main(String[] args)   {
        Test t=new Test();
        t.m1_mark_to_win();
    }
}


马克-to-win:注意上面一个例子ArithmeticException是个unchecked exception, 所以什么问题都没有,编译器不报错。马克-to-win:但是,当我们把ArithmeticException变成FileNotFoundException这种checked exception时,就会出现问题。马克-to-win:如下面例:1.6.2,根本就编译不过去。必须变成1.6.3才能运行。

例:1.6.2(编译报错,不能运行)-

 

import java.io.FileNotFoundException;

public class Test {
    void m1_mark_to_win() {
        throw new FileNotFoundException();
    }
    public static void main(String[] args)   {
        Test t=new Test();
        t.m1_mark_to_win();
    }
}

在throw new FileNotFoundException();外面,马克-to-win:必须包上一个try catch块儿,程序才能通过编译。

例:1.6.3-

import java.io.FileNotFoundException;
public class Test {
    void m1_mark_to_win() {
        try {
            throw new FileNotFoundException();
        } catch (FileNotFoundException e) {
            System.out.println(" in catch");
            e.printStackTrace();
        }
    }
    public static void main(String[] args)   {
        Test t=new Test();
        t.m1_mark_to_win();
        System.out.println("马克-to-win:优雅结束");
    }
}

更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/103108986

posted @ 2021-03-11 09:06  师徒行者  阅读(68)  评论(0编辑  收藏  举报