当程序执行到 try 块时,会依次执行 try 块中的代码。如果在执行过程中没有发生异常,那么代码会正常执行完毕,然后继续执行 try 块后面的代码。
但是,如果在 try 块中发生了异常,程序会立即跳转到对应的 catch 块。在 catch 块中,可以执行特定的错误处理代码。
执行顺序可以概括为以下几个步骤:
- 执行 try 块中的代码。
- 如果在 try 块中没有发生异常,继续执行 try 块后面的代码。
- 如果在 try 块中发生异常,程序会立即跳转到对应的 catch 块。
- 在 catch 块中,可以获取异常对象,并根据需要进行处理。
- 处理完异常后,继续执行 catch 块后面的代码。
需要注意的是,try-catch 块只会捕获在 try 块中发生的异常。如果异常发生在 try 块之外,那么它不会被捕获。
另外,一个 try 块可以后跟多个 catch 块,每个 catch 块可以处理不同类型的异常。程序会按照从上到下的顺序检查 catch 块,找到匹配的异常类型并执行相应的处理代码。
例如:
try {
int result = 1 / 0;
} catch (ArithmeticException e) {
System.out.println("发生除零异常!");
} catch (NullPointerException e) {
System.out.println("发生空指针异常!");
}
在这个示例中,try 块中除以零的操作会引发算术异常,程序会跳转到第一个 catch 块进行处理。如果在其他地方出现了空指针异常,就会跳转到第二个 catch 块进行处理。