在 Java 中,我们可以在另一个 try catch 块中声明一个 try catch 块吗?
javaobject oriented programmingprogramming
是的,我们可以在另一个 try-catch 块中声明一个 try-catch 块,这称为嵌套 try-catch 块。
嵌套 Try-Catch 块
- 如果内部 try 语句t没有匹配的catch 语句来处理特定异常,则控制权将转移到下一个 try 语句catch 处理程序,该处理程序应与匹配的 catch 语句匹配。
- 这种情况持续到其中一个catch 语句成功,或者直到所有嵌套 try 语句都完成。
- 如果没有一个 catch 语句匹配,则Java 运行时系统将处理异常。
- 当使用嵌套 try 块时,将首先执行内部 try 块。内部 try 块中抛出的任何异常都将在相应的catch 块中捕获。如果未找到匹配的 catch 块,则检查外部 try 块的 catch 块,直到所有嵌套的 try 语句都用尽为止。如果未找到匹配的块,则Java 运行时环境将处理执行。
语法
try { statement 1; statement 2; try { statement 1; statement 2; } catch(Exception e) { // 捕获相应的异常 } } catch(Exception e) { // 捕获相应的异常 } .............
示例
import java.io.*; public class NestedTryCatchTest { public static void main (String args[]) throws IOException { int n = 10, result = 0; try { // 外部 try 块 FileInputStream fis = null; fis = new FileInputStream (new File (args[0])); try { // 内部 trty 块 result = n/0; System.out.println("The result is"+result); } catch(ArithmeticException e) { // 内部 catch 块 System.out.println("除以零"); } } catch (FileNotFoundException e) { // 外部 catch 块 System.out.println("File was not found"); } catch(ArrayIndexOutOfBoundsException e) { // 外部 catch 块 System.out.println("Array Index Out Of Bounds Exception occured "); } catch(Exception e) { // 外部 catch 块 System.out.println("Exception occured"+e); } } }
输出
Array Index Out Of Bounds Exception occured