美文网首页Java 杂谈Java学习资料收集
如何理解java中checked exception和unche

如何理解java中checked exception和unche

作者: b424191ea349 | 来源:发表于2018-07-27 09:00 被阅读16次

Java中存在两种异常,一种是checked exception,一种是unchecked exception

两者区别

  • 区别1:
    checked exception 必须被显式的抛出或者捕获,比如FileNotFoundException,就是一个必须处理的异常。
    unchecked exception 不用被显式的抛出或者捕获,比如NullPointerException,没见过代码里面需要捕获或者抛出这个异常的吧。

  • 区别2:
    checked exception继承Exception类
    unchecked exception 继承RuntimeException类

举个栗子:

创建两个类CheckedExceptionAUnCheckedExceptionB

class CheckedExceptionA extends Exception {

}
class UnCheckedExceptionB extends RuntimeException {

}

创建一个Handle类使用他们时,CheckedExceptionA必须处理,UnCheckedExceptionB则不需要

public class Handle {

    public void handleChecked(){
        try {
            throw new CheckedExceptionA();
        } catch (CheckedExceptionA checkedExceptionA) {
            checkedExceptionA.printStackTrace();
        }
    }

    public void handleUnChecked(){
        throw new UnCheckedExceptionB();
    }
}

生产环境如何选择

首先自定义的异常类,在整个项目中checked/unchecked建议只采用一种,这样不会混乱。
很明显checkedException编译器会显示的提醒,不会忘记处理异常,UnCheckedException会使得代码精简,没有大量捕获代码,效率更高。
对于unchecked类型,如果忘记处理异常可能会导致项目流程中断,所以我的建议是,选择checked,对于WEB项目来说,使用了MVC分层,建议统一在Controller层捕获异常,其他层将异常上抛。

补充

unchecked exception不只有RuntimeException及其子类,还有Error 及其子类。

不解

不知道为什么RuntimeException会继承Exception,感觉怪怪的。

END

参考

java中CheckException和UnCheckException的区别
Java异常:选择Checked Exception还是Unchecked Exception?

相关文章

网友评论

    本文标题:如何理解java中checked exception和unche

    本文链接:https://www.haomeiwen.com/subject/qihwmftx.html