第32题:Java的异常处理机制是什么
📚 回答:
- 核心概念 :
Java的异常处理机制通过五个关键字实现:throws、throw、try、catch和finally。它们共同作用,帮助开发者捕获和处理程序运行时可能出现的异常。
1. 关键字详解
-
throws:-
用途:用于在方法签名中声明可能抛出的异常类型。
-
示例 :
javapublic void readFile(String path) throws IOException { // 可能抛出IOException的代码 }
-
-
throw:-
用途:用于手动抛出一个异常对象。
-
示例 :
javaif (path == null) { throw new IllegalArgumentException("路径不能为空"); }
-
-
try-catch-finally:-
用途 :用于捕获并处理异常。
try块:包含可能抛出异常的代码。catch块:捕获并处理特定类型的异常。finally块:无论是否发生异常,都会执行的代码(常用于释放资源)。
-
示例 :
javatry { int result = 10 / 0; // 可能抛出ArithmeticException } catch (ArithmeticException e) { System.out.println("除数不能为0"); } finally { System.out.println("无论是否异常,都会执行"); }
-
2. 异常分类
-
受检异常(Checked Exception):
- 必须显式处理(通过
try-catch或throws声明),否则编译不通过。 - 示例:
IOException、SQLException。
- 必须显式处理(通过
-
非受检异常(Unchecked Exception):
- 不强制要求处理,通常由程序逻辑错误引起。
- 示例:
NullPointerException、ArrayIndexOutOfBoundsException。
💡 面试官视角:
-
面试官可能会问"为什么需要
finally块?"答:
finally块确保无论是否发生异常,资源都能被正确释放(如关闭文件流、数据库连接等)。 -
面试官可能会追问"受检异常和非受检异常有什么区别?"
答:受检异常是编译期强制检查的异常,必须处理;非受检异常是运行时异常,通常由逻辑错误引发,无需强制处理。
📌 专栏 :大白话说Java面试题 --- 01-Java基础篇