Throwable是所有错误和异常的超类,它有两个直接的子类:Error 和 Exception。
Error是指 java 运行时系统的内部错误和资源耗尽错误,是程序无法处理的异常。例如:OutOfMemoryError(内存溢出),这类错误不会被应用程序抛出。
Exception 是程序本身可以处理的异常,Exception 分两类,一个是运行时异常 RuntimeException,一个是检查异常 CheckedException。
CheckedException一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强制程序去捕获此类异常,需要try...catch去处理。例如读取文件时的FileNotFoundException。
RuntimeException是Java虚拟机正常运行期间抛出的异常,这种错误编译器不会强制检查。需要在写代码的时候注意。例如数组下标越界,空指针等。
通常在Controller层需要去捕获service层的异常,防止返回一些不友好的错误信息到客户端。