try和catch是Java中异常处理机制的一部分。
try块用于包裹可能产生异常的代码。try块中的代码被称为"受保护的代码块",意味着在这个代码块中,如果发生了异常,程序仍然可以继续执行。
catch块用于捕获并处理try块中可能抛出的异常。catch块中的代码被称为"异常处理代码块",它会在try块中抛出的异常与catch块中指定的异常类型匹配时执行。
基本语法如下:
try {
// 可能发生异常的代码
} catch (ExceptionType1 e1) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e2) {
// 处理ExceptionType2类型的异常
} finally {
// 可选部分,无论是否发生异常,都会执行的代码
}
在try块中,如果发生了异常,程序会立即跳转到与异常类型匹配的catch块中。如果catch块中的代码成功处理了异常,程序会继续执行catch块之后的代码。如果catch块中的代码没有处理异常,它可以将异常重新抛出,以供上层代码继续处理。
finally块是可选的,它包含的代码会在try块中的代码执行完毕后无论是否发生异常都会执行。
通常情况下,try块只能有一个,但可以有多个catch块,用于处理不同类型的异常。catch块按照从上到下的顺序进行匹配,只有第一个匹配的catch块会执行。
以下是一个简单的示例:
try {
int result = 10 / 0; // 可能发生异常的代码
System.out.println("结果:" + result); // 不会执行,因为异常已经发生
} catch (ArithmeticException e) {
System.out.println("捕获到算术异常:" + e.getMessage());
} finally {
System.out.println("无论是否发生异常,都会执行");
}
在这个示例中,try块中的代码尝试将整数10除以0,这会导致一个算术异常。catch块中的代码会被执行,打印出捕获到的异常信息。最后,finally块中的代码会被执行,无论是否发生了异常。