java常用异常类

异常类名称异常类含义
ArithmeticException算数异常类
ArrayIndexOutOfBoundsException数组小标越界异常
ArrayStoreException将与数组类型不兼容的值赋值给数组元素时抛出的异常
ClassCastException类型强制转换异常类
ClassNotFoundException无法找到指定的类异常
EOFEException文件已结束异常类
FileNotFoundException文件未找到异常类
IllegalAccessException访问某类被拒绝时抛出的异常类
InstantiationException试图通过newinstantce()方法创建一个抽象类或者抽象接口的实例时抛出异常
IOEException输入/输出抛出异常类
NegativeArraySizeException建立元素个数为负数的异常类
NullPointerException空指针异常
NumberFromatException字符串转化为数字异常类
NoSuchFieldException字段未找到异常类
NoSuchMethodException方法未找到异常类
SecurityException由安全管理器抛出的异常,指示存在安全侵犯
SQLException操作数据库异常
StringIndexOutOfBoundsException字符串索引超出范围
### Java常用异常类总结 #### 1. **Throwable 类** `Throwable` 是 Java 所有错误和异常的父类。它有两个直接子类:`Error` 和 `Exception`[^1]。 --- #### 2. **Error 类** `Error` 表示 JVM 运行时系统的严重问题,通常是不可恢复的错误。一般情况下不需要针对这类错误编写专门的处理代码[^1]。 - **常见 Error 子类**: - `StackOverflowError`: 方法调用栈溢出时抛出(例如递归过深)。 - `OutOfMemoryError`: 虚拟机内存不足时抛出。 --- #### 3. **Exception 类** `Exception` 表示程序本身可以捕获并处理的异常情况。它可以进一步分为两大类:编译时异常(Checked Exception)和运行时异常(Unchecked Exception / RuntimeException)[^1]。 --- #### 4. **编译时异常 (Checked Exception)** 编译时异常是指在编译阶段就必须显式声明或者处理的异常。如果不做任何处理,代码无法通过编译[^1]。 - **常见 Checked Exception 子类**: - `IOException`: 输入/输出操作失败或中断时抛出。 ```java try { FileReader fileReader = new FileReader("example.txt"); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } ``` - `SQLException`: 数据库访问过程中发生错误时抛出。 - `ClassNotFoundException`: 尝试加载某个类但未找到该类时抛出。 --- #### 5. **运行时异常 (Unchecked Exception / RuntimeException)** 运行时异常是在程序执行期间发生的异常,它们继承自 `RuntimeException`。与编译时异常不同的是,运行时异常无需强制处理,由开发者自行决定是否捕获[^2]。 - **常见 Unchecked Exception 子类**: - `NullPointerException`: 访问空对象引用时抛出。 ```java String str = null; int length = str.length(); // 抛出 NullPointerException ``` - `ArrayIndexOutOfBoundsException`: 数组下标越界时抛出。 ```java int[] array = {1, 2, 3}; System.out.println(array[5]); // 抛出 ArrayIndexOutOfBoundsException ``` - `ArithmeticException`: 发生算术运算错误时抛出(如除以零)。 ```java int result = 10 / 0; // 抛出 ArithmeticException ``` - `ClassCastException`: 非法类型转换时抛出。 ```java Object obj = "string"; Integer num = (Integer) obj; // 抛出 ClassCastException ``` - `NumberFormatException`: 字符串转数字格式非法时抛出。 ```java int value = Integer.parseInt("abc"); // 抛出 NumberFormatException ``` --- #### 6. **自定义异常** 除了内置异常外,还可以根据需求创建自己的异常类。自定义异常可以通过继承 `Exception` 或 `RuntimeException` 来实现[^3]。 - **示例代码**: ```java public class AgeException extends Exception { private int age; public AgeException(int age) { super("年龄 " + age + " 不合理"); this.age = age; } @Override public String toString() { return "AgeException{" + "age=" + age + '}'; } } public class TestCustomException { public static void checkAge(int age) throws AgeException { if (age < 0 || age > 150) { throw new AgeException(age); } } public static void main(String[] args) { try { checkAge(-5); } catch (AgeException e) { System.out.println(e.toString()); } } } ``` --- #### 7. **包装类与基本类型的相互转换** Java 提供了一些方法来完成包装类到基本类型的转换,这有助于减少因数据类型不匹配而导致的异常[^4]。 - **示例代码**: ```java Integer integerObj = new Integer(100); int primitiveInt = integerObj.intValue(); System.out.println(primitiveInt); // 输出 100 ``` --- ### 总结 Java异常体系主要包括 `Error` 和 `Exception` 两个分支。其中,`Exception` 又细分为编译时异常和运行时异常。理解这两者的区别以及掌握常用异常类的应用场景,能够帮助开发人员更好地设计健壮的程序逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值