java 受检异常类型
时间: 2023-10-14 21:22:57 浏览: 92
Java 中的异常分为两种类型:受检异常(checked exceptions)和未受检异常(unchecked exceptions)。
受检异常是指在代码编译期间就需要处理的异常,必须在方法签名中声明并处理,否则代码将无法通过编译。常见的受检异常包括 `IOException`、`SQLException`、`ClassNotFoundException` 等。当代码可能抛出受检异常时,可以使用 `try...catch` 块或 `throws` 关键字来处理异常。示例代码如下:
```
public void readFile(String fileName) throws IOException {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(fileName));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("读取文件出错:" + e.getMessage());
throw e;
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
System.err.println("关闭文件出错:" + e.getMessage());
}
}
}
}
```
在上面的代码中,`readFile` 方法声明了 `IOException` 异常,表示该方法可能抛出 `IOException` 异常。在方法内部,我们使用 `try...catch` 块来捕获可能抛出的 `IOException` 异常,并在 `catch` 块中打印错误信息,并将异常重新抛出。最后,我们在 `finally` 块中关闭文件流,并在可能出现的异常情况下打印错误信息。
未受检异常是指在运行时才能发现的异常,不需要在方法签名中声明,也不需要进行处理。常见的未受检异常包括 `NullPointerException`、`ArrayIndexOutOfBoundsException`、`ClassCastException` 等。当代码可能抛出未受检异常时,可以使用 `try...catch` 块来捕获异常并进行处理,但是这样做并不是必须的。示例代码如下:
```
public int divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("除数不能为零");
}
return a / b;
}
```
在上面的代码中,`divide` 方法可能抛出一个 `IllegalArgumentException` 异常,表示除数不能为零。由于 `IllegalArgumentException` 是一个未受检异常,我们不需要在方法签名中声明该异常,也不需要使用 `try...catch` 块来处理异常。当方法抛出该异常时,调用该方法的代码可以选择捕获异常并进行处理,或者将异常继续抛出。
阅读全文