在 Java 中,**异常(Exception)**是用于表示程序运行过程中出现的错误或特殊情况的对象。Java 的异常体系是基于类的继承结构设计的,核心都在 java.lang 包下。
下面系统地给你介绍一下 Java 异常类的分类和常见异常。
Throwable
├── Error(错误)
└── Exception(异常)
├── RuntimeException(运行时异常 / 非受检异常)
└── 其他 Exception(受检异常 / Checked Exception)
java.lang.Throwable 是所有异常和错误的超类。
常用方法:
getMessage()printStackTrace()getCause()Error 表示严重的系统错误,不应由程序捕获和处理。
OutOfMemoryError:内存溢出StackOverflowError:栈溢出VirtualMachineError:虚拟机错误NoClassDefFoundError:类找不到✅ 通常只出现在系统层面问题,程序员一般不 catch。
编译时必须处理(try-catch 或 throws)
常见受检异常:
IOExceptionSQLExceptionClassNotFoundExceptionFileNotFoundExceptionInterruptedExceptionParseException示例:
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
编译不强制处理,通常由程序逻辑错误引起
常见 RuntimeException:
NullPointerException(空指针)ArrayIndexOutOfBoundsException(数组越界)ClassCastException(类型转换异常)IllegalArgumentException(非法参数)ArithmeticException(算术异常,如除 0)NumberFormatException(数字格式异常)示例:
int a = 1 / 0; // ArithmeticException
| 异常类 | 类型 | 说明 |
|---|---|---|
| NullPointerException | 运行时 | 调用 null 对象 |
| IndexOutOfBoundsException | 运行时 | 下标越界 |
| ClassCastException | 运行时 | 类型转换错误 |
| IllegalArgumentException | 运行时 | 参数非法 |
| IllegalStateException | 运行时 | 状态不正确 |
| IOException | 受检 | IO 错误 |
| SQLException | 受检 | 数据库异常 |
| ClassNotFoundException | 受检 | 类未找到 |
你可以继承 Exception 或 RuntimeException:
// 受检异常
public class MyException extends Exception {
public MyException(String msg) {
super(msg);
}
}
// 运行时异常
public class MyRuntimeException extends RuntimeException {
public MyRuntimeException(String msg) {
super(msg);
}
}
Error 是系统错误不处理,Exception 是程序异常可处理;
RuntimeException 编译不强制,其他 Exception 必须捕获。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。