在 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

相关文章