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

Unreachable Code Error ใน Java

Unreachable Code Error

Compile-time error: คอมไพเลอร์ตรวจพบโค้ดที่ ไม่มีทางรันถึงได้ แน่นอน

สาเหตุหลัก

  • Statement หลัง return, throw, break, continue (ใน loop)
  • Infinite loop (while(true), for(;;)) ที่ไม่มี break
  • if (false) { ... } หรือ condition ที่ compile-time constant เป็น false

ตัวอย่าง: Infinite Loop


public class Demo {
    public static void main(String[] args) {
        int val = 5;
        for (;;) { // infinite loop
            if (val == 5) {
                break;
                System.out.println("Unreachable!"); // ERROR
            }
        }
    }
}

Compile Error

Demo.java:7: error: unreachable statement
    System.out.println("Unreachable!");
    ^
1 error

ตัวอย่างอื่นๆ


// 1. หลัง return
void foo() {
    return;
    System.out.println("Unreachable"); // ERROR
}

// 2. หลัง throw
void bar() {
    throw new RuntimeException();
    System.out.println("Unreachable"); // ERROR
}

// 3. If false constant
void baz() {
    if (false) {
        System.out.println("Unreachable"); // ERROR
    }
}

// 4. Switch case fallthrough (บางกรณี)
void test(int x) {
    switch(x) {
        case 1: return;
        case 2: System.out.println("x=2"); break;
    }
    System.out.println("After switch"); // OK - อาจถึงได้
}

ความแตกต่าง: Unreachable vs Dead Code

  • Unreachable Code: Compile error (Java spec กำหนดชัดเจน)
  • Dead Code: รันได้แต่ไม่มีผลกระทบ (ไม่ error, IDE warn เฉพาะ)

ข้อยกเว้น: assert


assert false; // OK - assert อาจถูก disable (-da)
System.out.println("After assert"); // OK - ไม่ error