Java 异常处理机制(异常分类、try-catch、自定义异常)
一、前言
程序运行时出现的非语法错误(空指针、数组越界、除数为 0)统称为异常。如果不处理,程序会直接终止、崩溃。Java 提供了完善的异常处理机制,保证程序健壮性,是课程作业必考知识点。
二、异常的分类
1. 编译时异常(受检异常)
必须处理,否则代码报错 例:文件读写异常、日期解析异常
2. 运行时异常(非受检异常)
运行时才报错,编译不报错 例:空指针、数组越界、除数为 0
3. 错误 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向上抛出异常;- 自定义异常可以实现业务规则校验,让程序更规范健壮。
