Error与Exception[详解]
Java.lang.Throwable
|- Error (错误)
|- Exception (异常)
|- RuntimeException (运行时异常/系统异常)
|- ArrayIndexOutOfBoundsException (数组越界)
|- NullPointerException (空指针异常)
|- ClassCastException (类转换异常)
|- CheckedException (一般异常/普通异常)
异常的优点是可以提高程序的健壮性、可读性、可维护性;但异常的设计初衷是用于不正常的情形,JVM一般不会试图对它进行优化,会造成性能下降。
对可能出现的异常进行捕获,最好同时进行异常日志记录,便于系统维护。
【Error与Exception区别】:
Error是JVM无法自动恢复的严重问题,如内存泄漏;所以对Error进行继承设计是没有意义的。
Exception是一种设计或实现问题;即,如果程序运行正常,不会发生的情况。
【CheckedException与RuntimeException的区别】:
一般异常,是JVM强制让我们处理的异常,在通常的IDE会提示必须用try...catch捕获。
> 常见的一般异常有:文件读写IO异常、Socket通信时的网络异常、数据操作的JDBC异常。
运行时异常,JVM不强制我们捕获,异常一旦发生,会有JVM接管;一直向上抛,直到遇到异常处理的代码:
> 如果没有处理块,则达到最上层,
> 如果是多线程,由Thread.run()抛出; ---> 此线程退出
> 如果是单线程,由主函数main()抛出。 ---> 此程序退出
浙公网安备 33010602011771号