一、前言程序运行时出现的非语法错误空指针、数组越界、除数为 0统称为异常。如果不处理程序会直接终止、崩溃。Java 提供了完善的异常处理机制保证程序健壮性是课程作业必考知识点。二、异常的分类1. 编译时异常受检异常必须处理否则代码报错 例文件读写异常、日期解析异常2. 运行时异常非受检异常运行时才报错编译不报错 例空指针、数组越界、除数为 03. 错误 Error系统级严重问题程序无法处理三、异常处理四大关键字try包裹可能出错的代码catch捕获并处理异常finally无论是否异常一定执行释放资源throws抛出异常交给上层处理四、标准 try-catch-finally 示例java运行public class ExceptionDemo { public static void main(String[] args) { try { int a 10 / 0; // 除数为0异常 } catch (ArithmeticException e) { System.out.println(算术异常除数不能为0); } finally { System.out.println(代码执行完毕无论是否报错都会执行); } } }五、throws 抛出异常适用于自己不想处理交给调用者处理java运行public class ThrowsDemo { public static void test() throws Exception{ int[] arr {1,2,3}; System.out.println(arr[10]); } public static void main(String[] args) throws Exception { test(); } }六、常用运行时异常NullPointerException空指针异常ArrayIndexOutOfBoundsException数组下标越界ArithmeticException算术异常ClassCastException类型转换异常七、自定义异常作业高频当系统自带异常不满足业务需求时自定义业务异常java运行// 自定义异常类 class AgeException extends RuntimeException{ public AgeException(String msg){ super(msg); } } public class CustomException { public static void checkAge(int age){ if(age 0 || age 150){ throw new AgeException(年龄不合法); } } public static void main(String[] args) { checkAge(200); } }八、总结异常分为编译时异常、运行时异常、错误try-catch捕获处理异常防止程序崩溃finally用于资源释放throws向上抛出异常自定义异常可以实现业务规则校验让程序更规范健壮。