Java中编译期异常和运行期异常的区别

打印 上一主题 下一主题

主题 882|帖子 882|积分 2650

在Java中,异常分为运行期异常(Runtime Exception)编译期异常(Checked Exception),两者的核心区别在于 编译器是否欺压要求处理。以下是它们的具体对比:
1. 定义与分类

类别运行期异常(Runtime Exception)编译期异常(Checked Exception)继承关系继承自 RuntimeException(属于Unchecked Exception)直接继承自 Exception(但不继承RuntimeException)处理要求不欺压处理(编译器不查抄)必须显式处理(捕获或抛出,否则编译报错)计划意图表示程序逻辑错误或不可控的运行时标题(如空指针、数组越界)表示可预见的、需要程序主动处理的异常(如文件不存在、网络停止)2. 常见示例

运行期异常编译期异常NullPointerExceptionIOExceptionArrayIndexOutOfBoundsExceptionSQLExceptionClassCastExceptionFileNotFoundExceptionArithmeticException(除零错误)InterruptedException3. 处理方式对比

(1) 运行期异常(Runtime Exception)


  • 无需欺压处理,但建议在代码中主动避免或捕获。
  • 如果未处理,异常会向上传播,最终导致程序瓦解。
  • 典型场景
    1. // 示例:可能抛出NullPointerException
    2. String str = null;
    3. System.out.println(str.length()); // 运行时抛出异常
    复制代码
(2) 编译期异常(Checked Exception)


  • 必须显式处理(否则编译失败)。
  • 两种处理方式

    • 捕获异常(try-catch)
    • 声明抛出(throws)
    1. // 示例:必须处理IOException(编译期检查)
    2. public void readFile() throws IOException { // 方式1:声明抛出
    3.     FileReader file = new FileReader("test.txt");
    4. }
    5. // 或
    6. public void readFile() {
    7.     try {
    8.         FileReader file = new FileReader("test.txt");
    9.     } catch (IOException e) { // 方式2:捕获处理
    10.         e.printStackTrace();
    11.     }
    12. }
    复制代码
4. 核心区别总结

对比维度运行期异常编译期异常处理欺压力不欺压处理(程序员自行决定是否处理)必须处理(否则编译失败)错误类型程序逻辑错误或不可控的运行时标题外部依赖导致的、可预见的异常代码结实性依赖程序员主动预防(如判空、校验参数)欺压程序员处理潜伏标题典型修复方式通过代码逻辑修复(如避免空指针、数组越界)通过异常处理或资源管理(如重试、关闭毗连)5. 为什么如许计划?


  • 运行期异常
    通常由程序逻辑错误引起(如空指针、除零错误),属于开发者应主动避免的标题。编译器不欺压处理,避免代码冗余。
  • 编译期异常
    表示程序依赖的外部环境可能发生的标题(如文件不存在、网络停止)。欺压处理是为了让开发者明白应对这些可预见的异常,提拔代码可靠性。
6. 实际开发中的建议


  • 运行期异常

    • 通过代码逻辑避免(如判空、校验数组索引)。
    • 在关键位置捕获处理(如框架层统一处理)。

  • 编译期异常

    • 优先明白处理(如重试文件读取)。
    • 如果无法处理,可向上抛出并记录日志。

  • 自定义异常

    • 业务错误通常定义为RuntimeException(避免欺压调用方处理)。
    • 需要调用方主动处理的异常定义为Checked Exception。

一句话总结


  • 运行期异常:程序员的锅,编译器不欺压背锅。
  • 编译期异常: 调用方的锅,编译器要求必须背锅!-

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表