ฉันไม่รู้ว่านี่เป็นกรณีการใช้อย่างเป็นทางการหรือไม่ แต่ต่อไปนี้จะสร้างคำเตือนใน Java (ซึ่งสามารถสร้างข้อผิดพลาดในการคอมไพล์ได้หากผสมกับreturn
ข้อความสั่งซึ่งนำไปสู่โค้ดที่ไม่สามารถเข้าถึงได้)
while (1 == 2) { // Note that "if" is treated differently
System.out.println("Unreachable code");
}
อย่างไรก็ตามนี่เป็นเรื่องถูกกฎหมาย:
while (isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
ดังนั้นฉันมักจะพบว่าตัวเองกำลังเขียนวิธีอรรถประโยชน์โง่ ๆ สำหรับวิธีที่รวดเร็วที่สุดในการจำลองบล็อกโค้ดจากนั้นในการดำเนินการดีบั๊กค้นหาการโทรทั้งหมดให้เสร็จสิ้นดังนั้นหากการดำเนินการไม่สามารถเปลี่ยนแปลงสิ่งนี้ได้
JLSชี้ให้เห็นif (false)
ว่าไม่ก่อให้เกิด "รหัสที่ไม่สามารถเข้าถึงได้" ด้วยเหตุผลเฉพาะว่าสิ่งนี้จะทำให้การสนับสนุนแฟล็กการดีบักคือกรณีการใช้งานนี้โดยทั่วไป (h / t @auselen) ( static final boolean DEBUG = false;
เช่น)
ฉันแทนที่while
เพื่อif
ผลิตกรณีใช้งานที่คลุมเครือมากขึ้น ฉันเชื่อว่าคุณสามารถเดินทางไป IDE ของคุณเช่น Eclipse กับพฤติกรรมนี้ แต่การแก้ไขนี้เป็นเวลา 4 ปีในอนาคตและฉันไม่มีสภาพแวดล้อม Eclipse ที่จะเล่น