目录一、NullPointerException 空指针异常二、ClassNotFoundException 类不存在异常三、NumberFormatException 数字格式转换异常四、IndexOutOfBoundsException 数组下标越界异常五、ClassCastException 数据类型转换异常六、FileNotFoundException 文件未找到异常七、NoSuchMethodException 方法不存在异常八、IOException IO 流异常九、SocketException 网络套接字异常十、九大异常面试极简总结背诵版十一、文末小结在 Java 开发和面试中异常是日常开发出镜率最高的问题。线上 Bug、程序崩溃、接口报错绝大部分都来自常见运行时异常与编译异常。很多开发者只会报错排查不知道异常成因、不会提前规避、分不清各类异常的适用场景。本文整理面试与开发中9 大高频异常逐类讲解定义、触发场景、错误代码、解决方案从零彻底吃透 Java 常见异常体系。一、NullPointerException 空指针异常释义最常见的运行时异常。当程序调用null 对象的方法或属性时触发空指针异常。触发场景对象未初始化、接收 null 值、查询数据为空直接调用属性。public class ExceptionDemo { public static void main(String[] args) { // 对象未初始化默认null String str null; // 空对象调用方法触发空指针 str.length(); } }规避方案使用前判空if ! null、Objects.nonNull。二、ClassNotFoundException 类不存在异常释义编译通过、运行时找不到指定类属于检查型异常。触发场景Jar 包缺失、类路径错误、全类名写错、动态加载类不存在。public class ExceptionDemo { public static void main(String[] args) throws ClassNotFoundException { // 错误类名运行找不到类 Class.forName(com.test.NoSuchClass); } }规避方案检查依赖包、核对类全限定名、确保类可被加载。三、NumberFormatException 数字格式转换异常释义字符串格式不合法无法转为数字时抛出。触发场景空字符串、特殊字符、中文、小数点过多的字符串转数字。public class ExceptionDemo { public static void main(String[] args) { // 非纯数字字符串无法转换 String numStr 123abc; Integer.parseInt(numStr); } }规避方案转换前正则校验格式、try-catch 捕获异常。四、IndexOutOfBoundsException 数组下标越界异常释义访问数组/集合下标超出合法范围下标小于0或大于等于数组长度。触发场景循环下标控制不当、硬编码下标、集合为空强行取值。public class ExceptionDemo { public static void main(String[] args) { int[] arr {10,20,30}; // 数组长度3下标最大为2访问3越界 System.out.println(arr[3]); } }规避方案遍历使用 length 动态判断禁止硬编码下标。五、ClassCastException 数据类型转换异常释义强制类型转换时父子类无继承关系、类型不匹配导致转换失败。触发场景向上转型没问题向下强制转型类型不匹配。public class ExceptionDemo { public static void main(String[] args) { Object obj 测试字符串; // 字符串无法强转为Integer类型转换异常 Integer num (Integer) obj; } }规避方案转型前使用 instanceof 判断类型。六、FileNotFoundException 文件未找到异常释义读取/写入文件时文件路径错误、文件被删除、无访问权限。触发场景路径写错、资源文件丢失、相对路径错误。import java.io.FileReader; public class ExceptionDemo { public static void main(String[] args) throws Exception { // 不存在的文件路径 FileReader reader new FileReader(D:/noexist.txt); } }规避方案先判断文件是否存在、统一使用项目资源路径。七、NoSuchMethodException 方法不存在异常释义通过反射调用方法时找不到对应名称、参数列表的方法。触发场景方法名写错、参数类型不匹配、方法被私有化、版本更新方法删除。public class ExceptionDemo { public static void main(String[] args) throws NoSuchMethodException { // 获取不存在的方法 Demo.class.getMethod(noSuchMethod); } } class Demo{ public void test(){} }规避方案核对方法名、参数列表、访问权限。八、IOException IO 流异常释义文件读写、网络传输、流操作出现通用 IO 异常是所有 IO 异常的父类。触发场景文件损坏、流关闭异常、网络中断、读写权限不足。import java.io.FileInputStream; import java.io.IOException; public class ExceptionDemo { public static void main(String[] args) throws IOException { FileInputStream fis new FileInputStream(test.txt); fis.read(); fis.close(); } }规避方案IO 操作放入 try-catchfinally 关闭流资源。九、SocketException 网络套接字异常释义网络通信异常客户端与服务端连接中断、端口占用、连接超时、数据流断开。触发场景网络断开、服务端宕机、端口被占用、客户端强制关闭连接。规避方案网络操作增加重试机制、心跳检测、异常捕获重连。十、九大异常面试极简总结背诵版NullPointerException空对象调用方法属性ClassNotFoundException运行找不到指定类NumberFormatException字符串转数字格式非法IndexOutOfBoundsException数组集合下标越界ClassCastException数据强制类型转换不匹配FileNotFoundException文件路径错误或文件不存在NoSuchMethodException反射找不到对应方法IOException文件、流读写通用 IO 异常SocketException网络通信连接异常。十一、文末小结以上九大异常是 Java 开发与面试中出现频率最高的异常类型。掌握每种异常的触发场景、报错原因、规避方式可以快速定位线上 Bug、减少低级错误、写出健壮稳定的代码是后端工程师必备的基础功底。