浅谈异常处理

1、异常的概念

Java异常类层次结构图: 

Throwable:有俩个重要的子类:Error(错误)和Exception(异常),两者都是Java处理异常的重要子类,各自都包含了大量的子类。
Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
Exception(异常):程序本身能够处理的异常。
Exception可以分为:checked exceptions和unchecked exceptions:

1、unchecked exceptions(运行时异常)都是RuntimeException类及其子类异常,就是我们在开发中测试功能时程序终止,控制台出现的异常,比如:
NullPointerException(空指针异常)
IndexOutOfBoundsException(下标越界异常)
ClassCastException(类转换异常)
ArrayStoreException(数据存储异常,操作数组时类型不一致)
IO操作的BufferOverflowException异常
优点:减少代码量,提高效率。
缺点:会给用户带来不好的体验。

2、 checked exceptions,非运行时异常(编译异常):
是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。
通俗的话说就是在写代码时出现红线,需要try catch或者throws时出现的异常。
优点:可以解决已知的异常,给用户更好的体验。
缺点:代码量大,影响效率。

原文地址:https://www.cnblogs.com/Qi1007/p/10034076.html