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

เราสามารถมีคำสั่ง return ในบล็อก catch หรือ finally ใน Java ได้ไหม

ใช่ เราสามารถเขียนคำสั่ง return ของเมธอดในบล็อก catch และ finally ได้

  • มีสถานการณ์ที่เมธอดจะมีชนิดการคืนค่า และเราสามารถคืนค่าบางค่าที่ส่วนใดส่วนหนึ่งของเมธอดได้ตามเงื่อนไข
  • หากเราคืนค่าในบล็อก catch และเราสามารถคืนค่าที่ปลายทางของเมธอด โค้ดจะทำงานสำเร็จ
  • หากเราคืนค่าในบล็อก catch และเราเขียนคำสั่งที่ปลายทางของเมธอดหลังจากคืนค่า โค้ดจะไม่ทำงาน จึงกลายเป็นโค้ดที่ไม่สามารถเข้าถึงได้ (unreachable code) เนื่องจาก Java ไม่รองรับ unreachable code
  • หากเราคืนค่าในบล็อก finally จะไม่จำเป็นต้องมีคำสั่ง return ที่ปลายทางของเมธอด

ตัวอย่าง 1

public class CatchReturn {    int calc() {       try {          int x=12/0;       } catch (Exception e) {          return 1;       }       return 10;    }    public static void main(String[] args) {       CatchReturn cr = new CatchReturn();       System.out.println(cr.calc());    } }

ผลลัพธ์

1

ตัวอย่าง 2

public class FinallyReturn {    int calc() {       try {          return 10;       } catch(Exception e) {          return 20;       } finally {          return 30;       }    }    public static void main(String[] args) {       FinallyReturn fr = new FinallyReturn();       System.out.println(fr.calc());    } }

ผลลัพธ์

30