Java Exception和Error的区别
异常和错误都是Throwable类的子类。错误指的是由于系统资源不足而出现的问题,我们的应用程序不应该捕获这些类型的问题。错误的一些示例包括系统崩溃错误和内存溢出错误。错误主要发生在运行时,它们属于未检查类型。
异常会在运行时和编译时可能发生的问题,主要出现在开发人员编写的代码中。异常分为两个类别,分别是已检查异常和未检查异常。
序号 | 键值 | 错误 | 异常 |
---|---|---|---|
1 | 类型 | 分类为未检查的类型 | 分类为已检查和未检查的类型 |
2 | 包 | 属于java.lang.error | 属于java.lang.Exception |
3 | 可恢复/不可恢复 | 不可恢复 | 可恢复 |
4 | 不能在编译时发生 | 可以在运行时和编译时都发生 | |
5 | 示例 | OutOfMemoryError ,IOError | NullPointerException , SqlException |
错误示例
public class ErrorExample {
public static void main(String[] args){
recursiveMethod(10)
}
public static void recursiveMethod(int i){
while(i!=0){
i=i+1;
recursiveMethod(i);
}
}
}
输出
Exception in thread "main" java.lang.StackOverflowError
at ErrorExample.ErrorExample(Main.java:42)
异常示例
public class ExceptionExample {
public static void main(String[] args){
int x = 100;
int y = 0;
int z = x / y;
}
}
输出
java.lang.ArithmeticException: / by zero
at ExceptionExample.main(ExceptionExample.java:7)