JavaSE核心知识点02面向对象编程02-08(异常处理)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关



📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

好的!作为Java新手,掌握异常处理是编写健壮程序的关键。以下是一份详细的Java异常处理指南,包含基础概念、使用方法和实际示例:


JavaSE核心知识点02面向对象编程02-08(异常处理)

一、异常处理的核心概念

1. 什么是异常?
  • 异常(Exception):程序运行时发生的非正常情况,会中断正常的指令流。
  • 异常处理的必要性:避免程序崩溃、提供友好错误提示、确保资源正确释放。
2. Java异常分类

Java异常体系以 Throwable 为根类,分为两类:

  • Error:严重错误(如内存溢出 OutOfMemoryError),程序无法处理。
  • Exception:可处理的异常,分为两类:
    • Checked Exception(检查型异常):编译时强制检查(如 IOException)。
    • Unchecked Exception(非检查型异常):运行时异常(如 NullPointerExceptionArithmeticException)。

二、异常处理的关键字

1. try-catch-finally
try {
    // 可能抛出异常的代码
    int result = 10 / 0; // 抛出 ArithmeticException
} catch (ArithmeticException e) {
    // 捕获并处理异常
    System.out.println("除数不能为零!");
} finally {
    // 无论是否发生异常,都会执行的代码(常用于释放资源)
    System.out.println("执行finally块");
}
2. throws

声明方法可能抛出的异常,由调用者处理:

public void readFile() throws IOException {
    FileReader file = new FileReader("test.txt");
    // ...
}
3. throw

手动抛出异常对象:

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

三、常见异常类型与处理

1. 常见异常示例
异常类型触发场景处理建议
NullPointerException调用 null 对象的方法或属性检查对象是否为 null
ArrayIndexOutOfBounds访问数组越界位置检查数组索引范围
IOException文件读写失败(如文件不存在)使用 try-catchthrows
NumberFormatException字符串转换为数字失败(如 "abc"校验输入是否为有效数字
2. 处理多个异常
try {
    FileInputStream fis = new FileInputStream("file.txt");
    int data = fis.read();
} catch (FileNotFoundException e) {
    System.out.println("文件未找到!");
} catch (IOException e) {
    System.out.println("读取文件失败!");
} catch (Exception e) {
    // 兜底处理(不建议滥用)
    System.out.println("未知错误!");
}

四、自定义异常

1. 创建自定义异常类
public class InsufficientBalanceException extends Exception {
    public InsufficientBalanceException(String message) {
        super(message);
    }
}
2. 使用自定义异常
public void withdraw(double amount) throws InsufficientBalanceException {
    if (amount > balance) {
        throw new InsufficientBalanceException("余额不足!");
    }
    balance -= amount;
}

五、最佳实践与常见陷阱

1. 最佳实践
  • 精准捕获:避免捕获过于宽泛的异常(如直接 catch (Exception e))。
  • 资源释放:使用 try-with-resources(Java 7+)自动关闭资源:
    try (FileInputStream fis = new FileInputStream("file.txt")) {
        // 使用资源
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • 记录异常:使用日志工具(如 log4j)记录异常堆栈:
    catch (SQLException e) {
        logger.error("数据库操作失败", e);
    }
    
2. 常见陷阱
  • 忽略异常:空 catch 块会隐藏问题。
    // 错误示例!
    try {
        // 可能出错的代码
    } catch (Exception e) {
        // 空处理
    }
    
  • 在finally中return:可能导致异常被覆盖。
    try {
        // ...
    } finally {
        return; // 不推荐!
    }
    

六、总结与练习

1. 关键点总结
  • 分类:理解Checked vs Unchecked异常的区别。
  • 处理方式try-catchthrowsthrow的适用场景。
  • 资源管理:优先使用 try-with-resources 替代手动关闭。
2. 练习题目
  1. 编写代码读取文件内容,处理可能的 FileNotFoundException
  2. 实现一个除法方法,当除数为零时抛出 ArithmeticException
  3. 自定义一个 InvalidEmailException,并在用户输入无效邮箱时抛出。

通过实际编码练习,逐步掌握异常处理的核心技巧!遇到问题时,可查阅 Java官方文档 或调试工具(如IDE的断点功能)。


📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值