Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราสามารถประกาศ try catch block ภายใน try catch block อื่นใน Java ได้หรือไม่


ใช่ เราสามารถประกาศ . ได้ บล็อก try-catch ภายในบล็อก try-catch อื่น ซึ่งเรียกว่า บล็อก try-catch ที่ซ้อนกัน

บล็อก Try-Catch ที่ซ้อนกัน

  • ถ้าเป็น นักลองชั้นใน ไม่มีคำสั่ง catch . ที่ตรงกัน สำหรับข้อยกเว้นโดยเฉพาะ การควบคุมจะถูกโอนไปยังคำสั่ง try ถัดไป ตัวจัดการการดักจับ ที่คาดไว้สำหรับคำสั่ง catch ที่ตรงกัน
  • สิ่งนี้จะดำเนินต่อไปจนกว่า คำสั่ง catch ตัวใดตัวหนึ่งจะสำเร็จ หรือจนกว่า การลองซ้อน . ทั้งหมด เสร็จสรรพ
  • หากไม่มีคำสั่ง catch ที่ตรงกัน ระบบรันไทม์ของ Java จะจัดการกับข้อยกเว้น
  • เมื่อลองบล็อกซ้อนกัน ถูกนำมาใช้ บล็อกการลองภายใน จะถูกดำเนินการก่อน ข้อยกเว้นใด ๆ ที่เกิดขึ้นในบล็อกการลองภายในจะติดอยู่ในบล็อกการดักจับ หากไม่พบบล็อก catch ที่ตรงกัน ให้ catch block ของ outer try block จะถูกตรวจสอบจนกว่าคำสั่ง try ที่ซ้อนกันทั้งหมดจะหมดลง หากไม่พบบล็อกที่ตรงกัน Java Runtime Environment จัดการการดำเนินการ

ไวยากรณ์

try {
   statement 1;
   statement 2;
   try {
      statement 1;
      statement 2;
   }
   catch(Exception e) {
      // catch the corresponding exception  
   }  
}
catch(Exception e) {
   // catch the corresponding exception
}
   .............

ตัวอย่าง

import java.io.*;
public class NestedTryCatchTest {
   public static void main (String args[]) throws IOException {
    int n = 10, result = 0;
      try { // outer try block
         FileInputStream fis = null;
         fis = new FileInputStream (new File (args[0]));
         try { // inner trty block
            result = n/0;
            System.out.println("The result is"+result);
         }  
         catch(ArithmeticException e) { // inner catch block
            System.out.println("Division by Zero");
         }
      }
      catch (FileNotFoundException e) { // outer catch block
         System.out.println("File was not found");
      }
      catch(ArrayIndexOutOfBoundsException e) { // outer catch block
         System.out.println("Array Index Out Of Bounds Exception occured ");
      }
      catch(Exception e) { // outer catch block
         System.out.println("Exception occured"+e);
      }
   }
}

ผลลัพธ์

Array Index Out Of Bounds Exception occured