温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是Java异常处理

发布时间:2026-07-26 08:44:51 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

Java 异常处理(Exception Handling) 是 Java 提供的一种机制,用来捕获、处理程序运行过程中出现的错误或异常情况,防止程序直接崩溃,提高程序的健壮性和可维护性。


一、为什么需要异常处理?

在程序运行中,可能会出现各种问题,例如:

  • 除零错误
  • 空指针访问
  • 文件不存在
  • 网络中断
  • 输入格式错误

如果不处理这些异常,程序会直接终止。
异常处理的目的:

✅ 让程序继续运行或优雅地退出
✅ 给出错误提示
✅ 方便定位问题
✅ 提高代码可读性和可维护性


二、Java 异常体系结构

Java 中,所有异常和错误都继承自 java.lang.Throwable

Throwable
 ├── Error(严重错误,一般不处理)
 │    ├── OutOfMemoryError
 │    └── StackOverflowError
 │
 └── Exception(异常,需要处理的)
      ├── RuntimeException(运行时异常)
      │    ├── NullPointerException
      │    ├── ArrayIndexOutOfBoundsException
      │    └── ArithmeticException
      │
      └── 非 RuntimeException(受检异常,必须处理)
           ├── IOException
           ├── SQLException
           └── FileNotFoundException

常见分类

类型 说明 是否必须处理
Error JVM 错误,程序无法恢复
RuntimeException 运行时异常
受检异常(Checked Exception) 编译期要求处理

三、异常处理的核心关键字

Java 使用五个关键字处理异常:

1️⃣ try

用于包裹可能抛出异常的代码

try {
    int a = 10 / 0;
}

2️⃣ catch

用于捕获并处理异常

catch (ArithmeticException e) {
    System.out.println("除零错误");
}

✅ 可以多个 catch
✅ 捕获范围小的异常放前面


3️⃣ finally

无论是否发生异常都会执行(常用于释放资源)

finally {
    System.out.println("一定会执行");
}

4️⃣ throw

手动抛出一个异常

throw new RuntimeException("出错了");

5️⃣ throws

声明方法可能抛出的异常

public void test() throws IOException {
}

四、基本语法示例

示例 1:捕获异常

public class Test {
    public static void main(String[] args) {
        try {
            int a = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("算术异常:" + e.getMessage());
        } finally {
            System.out.println("程序结束");
        }
    }
}

输出:

算术异常:/ by zero
程序结束

示例 2:受检异常

import java.io.*;

public class Test {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("a.txt");
    }
}

五、异常对象的常用方法

catch (Exception e) {
    e.getMessage();     // 获取异常信息
    e.printStackTrace(); // 打印异常堆栈
}

六、自定义异常

示例:自定义异常类

class AgeException extends Exception {
    public AgeException(String msg) {
        super(msg);
    }
}

使用:

if (age < 0) {
    throw new AgeException("年龄不能为负数");
}

七、异常处理的最佳实践 ✅

✅ 不要吞掉异常(空 catch)
✅ 捕获具体异常,而不是 Exception
✅ 资源使用 try-with-resources
✅ 异常信息要清晰
✅ 不要用来控制正常业务逻辑

try-with-resources(推荐)

try (FileReader fr = new FileReader("a.txt")) {
    // 使用资源
} catch (IOException e) {
    e.printStackTrace();
}

八、总结一句话

Java 异常处理是一种用于捕获和处理程序运行时错误的机制,通过 try、catch、finally、throw 和 throws 保证程序稳定、可控地运行。

如果你愿意,我也可以:

  • 通俗比喻讲异常
  • 对比 异常 vs 错误
  • 面试常考异常题
  • 结合 真实项目示例
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI