error和exception的区别?

在 Java 中,ErrorException 都是用于处理异常情况的类,都是从Throwable继承而来。

异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。

如下图所示:

error和exception的区别?-mikechen

Error

Error是无法处理的异常,比如:OutOfMemoryError,一般发生这种异常,JVM会选择终止程序,因此我们编写程序时不需要关心这类异常。

 

Exception

Exception 类及其子类,表示程序运行过程中可以捕获、和处理的异常情况。

它们通常表示应用程序级别的问题,如:输入不合法、网络故障等。

具体为:NullPointerException、IndexOutOfBoundsException、ClassCastException….等等,这些异常是我们可以处理的异常。

Exception 主要分为: 可查的异常(checked exceptions) 、和 不可查的异常(unchecked exceptions)。

如下图所示:

error和exception的区别?-mikechen

1)红色为可查的异常(checked exceptions):编译器要求必须处置的异常;

比如:IOException就是典型的checked exceptions

public void readFile() throws IOException {
    FileReader file = new FileReader("somefile.txt");
    BufferedReader fileInput = new BufferedReader(file);
    // 代码
}

编译器强制程序必须捕获、或声明抛出这些异常。

2)绿色为不可查的异常(unchecked exceptions):编译器不要求强制处置的异常。

比如:NullPointerException 是 Java 中一种常见的未检查异常(Unchecked Exception):

public class NullPointerExample {
    public static void main(String[] args) {
        String text = null;

        try {
            int length = text.length(); // 这里会抛出 NullPointerException
        } catch (NullPointerException e) {
            System.out.println("Caught NullPointerException: " + e.getMessage());
        }
    }
}

这种异常无需在编译时声明或捕获,但在编写健壮代码时,预防和处理 NullPointerException 是非常重要的。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法