Java的异常分为受检查(checked exception)和非受检查(unchecked exception)。
受检查异常是指编译期间就能识别的异常,异常一般是可预见性的,及方法声明中的异常。
非受检查异常是指方法的运行过程中发生的各种异常被称为"不被检查的异常"。这种异常是错误,会被自动捕获。
Java的总异常类为Throwable,下面两个重要的子异常处理类Error和Exception。
Error:是指程序的错误,大多与程序代码无关,与计算机的硬件资源有关,例如OOM(OutOfMemoryError),NoClassDefFoundError。
Exception:是程序本身可以处理的异常,它的一个重要的子类是RuntimeException。
异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

异常处理非常的重要,一般能处理就处理,不能处理,则抛出给上层调用者处理。通常,前端调用接口,为了避免异常报错学习直接返回给前台,我们会通过AOP定义全局异常处理,返回统一格式的异常信息给前端。
package com.junfeng;
/**
* @author junfeng
* @className Test
* @description Test
* @date 2023/1/30
**/
public class Test {
public static void main(String[] args) {
try {
try {
int j = 1;
System.out.println(j / 0);
} catch (Exception e) {
System.out.println(1);
//这个地方抛出了异常,外层try会捕获,一次打印结果为1234,如果没有抛则打印124
throw new RuntimeException(e);
} finally {
System.out.println(2);
}
} catch (Exception e) {
System.out.println(3);
throw e;
} finally {
System.out.println(4);
}
}
}