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

ในที่สุดบล็อกจะถูกดำเนินการใน Java เสมอหรือไม่


ใช่ บล็อกสุดท้ายจะถูกดำเนินการเสมอ เว้นแต่จะมีการยุติโปรแกรมที่ผิดปกติซึ่งเป็นผลมาจากการหยุดทำงานของ JVM หรือจากการเรียกไปยัง System.exit()

  • ในที่สุดบล็อกจะได้รับการดำเนินการเสมอไม่ว่าจะเกิดข้อยกเว้นหรือไม่
  • หากมีข้อยกเว้น เช่น การปิดไฟล์หรือการเชื่อมต่อ DB บล็อกสุดท้ายจะถูกใช้เพื่อล้างโค้ด
  • เราไม่สามารถพูดได้ว่าบล็อกสุดท้ายจะทำงานตลอดเวลา เพราะบางครั้งหากคำสั่งใดๆ เช่น System.exit() หรือโค้ดที่คล้ายกันถูกเขียนลงในบล็อก try โปรแกรมจะยุติการทำงานโดยอัตโนมัติและบล็อกสุดท้ายจะไม่ถูกดำเนินการในกรณีนี้
  • ในที่สุดบล็อกจะไม่ทำงานเนื่องจากเงื่อนไขอื่นๆ เช่น เมื่อ JVM มีหน่วยความจำไม่เพียงพอเมื่อกระบวนการจาวาของเราถูกฆ่าตายอย่างแรงจากตัวจัดการงานหรือคอนโซลเมื่อเครื่องของเราปิดตัวลงเนื่องจากไฟฟ้าขัดข้องและสภาวะการหยุดชะงักในบล็อกการลองของเรา

ตัวอย่างที่ 1

public class FinallyBlock {
   public static void main(String args[]){
      try {
         int a=10,b=30;
         int c = b/a;
         System.out.println(c);
      } catch(ArithmeticException ae){
         System.out.println(ae);
      } finally {
         System.out.println("finally block is always executed");
      }
   }
}

ในตัวอย่างข้างต้น บล็อกสุดท้ายจะถูกดำเนินการเสมอหากมีข้อยกเว้นเกิดขึ้นหรือไม่

ผลลัพธ์

3
finally block is always executed

ตัวอย่างที่ 2

public class FinallyBlock {
   public static void main(String args[]) {
      try {
         System.out.println("I am in try block");
         System.exit(1);
      } catch(Exception ex){
         ex.printStackTrace();
      } finally {
         System.out.println("I am in finally block");
      }
   }
}

ในตัวอย่างข้างต้น บล็อกสุดท้ายจะไม่ทำงานเนื่องจากเงื่อนไข System.exit(1) ในบล็อกการลอง

ผลลัพธ์

I am in try block