在Java中,异常处理是通过try-catch-finally块来实现的。以下是处理异常的基本结构:

1
2
3
4
5
6
7
8
9
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e1) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e2) {
// 处理ExceptionType2类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}

1 示例代码

假设我们有一个方法可能会抛出IOException异常:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.FileInputStream;
import java.io.IOException;

public class ExceptionHandlingExample {
public static void main(String[] args) {
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("test.txt");
// 读取文件的代码
} catch (IOException e) {
System.out.println("发生了一个IOException: " + e.getMessage());
} finally {
try {
if (fileInputStream != null) {
fileInputStream.close();
}
} catch (IOException e) {
System.out.println("关闭文件流时发生了一个IOException: " + e.getMessage());
}
}
}
}

2 关键点解释

  1. try块:包含可能抛出异常的代码。
  2. catch块:捕获并处理特定类型的异常。可以有多个catch块来处理不同类型的异常。
  3. finally块:无论是否发生异常,finally块中的代码都会执行。通常用于释放资源。

3 抛出异常

你也可以在代码中手动抛出异常,使用throw关键字:

1
2
3
4
5
public void someMethod() throws SomeException {
if (某些条件) {
throw new SomeException("异常信息");
}
}

4 自定义异常

你可以创建自己的异常类,继承自Exception或其子类:

1
2
3
4
5
public class MyCustomException extends Exception {
public MyCustomException(String message) {
super(message);
}
}

然后在代码中使用:

1
2
3
4
5
public void someMethod() throws MyCustomException {
if (某些条件) {
throw new MyCustomException("自定义异常信息");
}
}

通过这些机制,Java提供了强大的异常处理能力,帮助开发者更好地管理和调试代码中的错误。