ไม่ เราไม่สามารถเขียนข้อความใดๆ ระหว่าง พยายาม จับ และสุดท้ายบล็อก และบล็อกเหล่านี้รวมเป็นหนึ่งหน่วย การทำงานของ ลอง คำหลักคือการระบุวัตถุข้อยกเว้นและจับวัตถุข้อยกเว้นนั้นและโอนการควบคุมพร้อมกับวัตถุข้อยกเว้นที่ระบุไปยัง บล็อกการดักจับ โดยระงับการดำเนินการของ บล็อกการลอง . การทำงานของ บล็อกการดักจับ คือการได้รับวัตถุคลาสข้อยกเว้นที่ส่งโดย ลอง และ จับ วัตถุคลาสข้อยกเว้นนั้นและกำหนดวัตถุคลาสข้อยกเว้นนั้นให้กับการอ้างอิงของคลาสข้อยกเว้นที่เกี่ยวข้องที่กำหนดไว้ใน จับ บล็อค . บล็อกในที่สุด คือบล็อกที่จะถูกดำเนินการโดยไม่คำนึงถึงข้อยกเว้น
เราสามารถเขียนคำสั่งเช่นลองกับ catch block , ลองใช้บล็อก catch หลายอัน , ลองด้วยการบล็อกในที่สุด และ ลองจับแล้วบล็อกในที่สุด และไม่สามารถเขียนโค้ดหรือคำสั่งใดๆ ระหว่างชุดค่าผสมเหล่านี้ได้ หากเราพยายามใส่ข้อความใด ๆ ระหว่างบล็อกเหล่านี้ จะทำให้เกิด ข้อผิดพลาดในการคอมไพล์เวลา
ไวยากรณ์
try { // Statements to be monitored for exceptions } // We can't keep any statements here catch(Exception ex){ // Catching the exceptions here } // We can't keep any statements here finally{ // finally block is optional and can only exist if try or try-catch block is there. // This block is always executed whether exception is occurred in the try block or not // and occurred exception is caught in the catch block or not. // finally block is not executed only for System.exit() and if any Error occurred. }
ตัวอย่าง
public class ExceptionHandlingTest { public static void main(String[] args) { System.out.println("We can keep any number of statements here"); try { int i = 10/0; // This statement throws ArithmeticException System.out.println("This statement will not be executed"); } //We can't keep statements here catch(ArithmeticException ex){ System.out.println("This block is executed immediately after an exception is thrown"); } //We can't keep statements here finally { System.out.println("This block is always executed"); } System.out.println("We can keep any number of statements here"); } }
ผลลัพธ์
We can keep any number of statements here This block is executed immediately after an exception is thrown This block is always executed We can keep any number of statements here