2.3 KiB
2.3 KiB
- Exception 和 Error 有什么区别? #card #java
id:: 667e7553-cb20-45d8-935e-39dfa35eb667
- 在 Java 中,所有的异常都有一个共同的祖先
java.lang包中的Throwable类。Throwable类有两个重要的子类: Exception: 程序本身可以处理的异常,可以通过catch来进行捕获。Exception又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。Error:Error属于程序无法处理的错误 ,我们没办法通过不建议通过catch来进行捕获catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误 (OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。
- 在 Java 中,所有的异常都有一个共同的祖先
- Checked Exception 和 Unchecked Exception 有什么区别?#card #java
id:: 667e7579-f2d5-4470-b92b-20db2d502934
- Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch 或者 throws 关键字处理的话,就没办法通过编译。比如下面这段 IO 操作的代码:除了 RuntimeException 及其子类以外,其他的 Exception 类及其子类都属于受检查异常 。
- 常见的受检查异常有:IO 相关的异常、ClassNotFoundException、SQLException...。
- Unchecked Exception 即 不受检查异常 ,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。
RuntimeException及其子类都统称为非受检查异常,常见的有(建议记下来,日常开发中会经常用到):NullPointerException(空指针错误)IllegalArgumentException(参数错误比如方法入参类型错误)NumberFormatException(字符串转换为数字格式错误,IllegalArgumentException的子类)ArrayIndexOutOfBoundsException(数组越界错误)ClassCastException(类型转换错误)ArithmeticException(算术错误)SecurityException(安全错误比如权限不够)UnsupportedOperationException(不支持的操作错误比如重复创建同一用户)
- Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch 或者 throws 关键字处理的话,就没办法通过编译。比如下面这段 IO 操作的代码:除了 RuntimeException 及其子类以外,其他的 Exception 类及其子类都属于受检查异常 。