在 Java 中,Error
和 Exception
都是用于处理异常情况的类,都是从Throwable继承而来。
异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。
如下图所示:
Error
Error是无法处理的异常,比如:OutOfMemoryError,一般发生这种异常,JVM会选择终止程序,因此我们编写程序时不需要关心这类异常。
Exception
Exception
类及其子类,表示程序运行过程中可以捕获、和处理的异常情况。
它们通常表示应用程序级别的问题,如:输入不合法、网络故障等。
具体为:NullPointerException、IndexOutOfBoundsException、ClassCastException….等等,这些异常是我们可以处理的异常。
Exception
主要分为: 可查的异常(checked exceptions) 、和 不可查的异常(unchecked exceptions)。
如下图所示:
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面试题总结》