โค้ดยิม/จาวาบล็อก/สุ่ม/ข้อผิดพลาดรหัสคำสั่งที่ไม่สามารถเข้าถึงได้ใน Java
John Squirrels
ระดับ
San Francisco

ข้อผิดพลาดรหัสคำสั่งที่ไม่สามารถเข้าถึงได้ใน Java

เผยแพร่ในกลุ่ม
คำสั่งรหัสที่ไม่สามารถเข้าถึงได้เป็นปัญหาทั่วไปของผู้เริ่มต้น Java นักพัฒนามือใหม่จำนวนมากสับสนระหว่างข้อผิดพลาดกับ “โค้ดที่ตายแล้ว” ซึ่งเป็นอีกปรากฏการณ์หนึ่งที่เกี่ยวข้องกับ Java แม้ว่าทั้งสองจะคล้ายกันโดยการสำแดง แต่ก็มีความแตกต่างบางประการที่เราจะกล่าวถึงในโพสต์นี้ นอกเหนือจากนั้น คุณจะพบว่าสาเหตุส่วนใหญ่ที่ทำให้คอมไพเลอร์ของคุณส่งคืนคำสั่งโค้ดที่ไม่สามารถเข้าถึงได้คืออะไร และค้นพบวิธีแก้ไขง่ายๆ เพื่อให้โค้ดของคุณทำงานอีกครั้ง

รหัสที่ไม่สามารถเข้าถึงได้คืออะไร?

ตามคำนิยาม คำสั่งที่ไม่สามารถเข้าถึงได้คือคำสั่งที่คอมไพเลอร์จะไม่ดำเนินการเมื่อคุณรันโค้ดที่พร้อมใช้งาน คำสั่งส่งคืนรหัสที่ไม่สามารถเข้าถึงได้โดยทั่วไปเป็นสัญญาณของข้อผิดพลาดเชิงตรรกะภายในโปรแกรม แม้ว่าจะมีสาเหตุหลายประการที่ทำให้คุณลงเอยด้วยข้อความดังกล่าว แต่ในทุกกรณี โค้ดที่ไม่สามารถเข้าถึงได้นั้นซ้ำซ้อน ทำให้โปรแกรมของคุณรกรุงรัง และควรหลีกเลี่ยงในทุกกรณี

รหัสที่ไม่สามารถเข้าถึงได้กับรหัสที่ตายแล้ว

ในชุมชนการพัฒนา แนวคิดของรหัส "ไม่สามารถเข้าถึงได้" และ "ตาย" มีความหมายเหมือนกัน อย่างไรก็ตาม หากคุณไม่เข้าใจเมื่ออ่านเอกสารประกอบ คุณอาจเห็นว่าแนวทางการพัฒนามักกล่าวถึงทั้งสองอย่างแยกกัน มีความแตกต่างระหว่างรหัสที่ตายแล้วและไม่สามารถเข้าถึงได้หรือไม่? โดยพื้นฐานแล้ว ความแตกต่างระหว่างข้อผิดพลาดทั้งสองอยู่ที่วิธีที่คอมไพเลอร์ตอบสนองต่อข้อผิดพลาดเหล่านั้น หากโค้ดที่คุณป้อนในคอมไพเลอร์ไม่สามารถเข้าถึงได้คุณจะได้รับข้อผิดพลาดรันไทม์คอมไพล์ในการแจ้งเตือน Java หากคำสั่งของคุณคือ " รหัสที่ตายแล้ว " จะไม่มีข้อผิดพลาดรันไทม์ - นักพัฒนาจะได้รับคำเตือนจากระบบต่อไปนี้:
class DeadCode {
    void deadcode_Method(boolean b) {
    System.out.println("Reachable statement");
        if(true) {
        return;
        }
    System.out.println("Unreachable statement"); // dead code
    }
}
เนื่องจากไม่มีข้อผิดพลาดของคอมไพเลอร์โดยตรงในกรณีของโค้ดที่ตายแล้ว การตรวจจับจึงทำได้ยากขึ้น อย่างไรก็ตาม หากคุณติดตามการส่งคืน System.out.printInอย่างระมัดระวัง การตรวจหาโค้ดที่ตายแล้วจะไม่สร้างปัญหาให้คุณ

เหตุใดคุณจึงได้รับคำสั่งรหัสที่ไม่สามารถเข้าถึงได้

ข่าวดีก็คือ การติดตามสาเหตุของปัญหารหัสที่เข้าไม่ถึงนั้นเป็นเรื่องง่าย มีสาเหตุหลักสามประการที่ทำให้คอมไพเลอร์ของคุณส่งคืนข้อผิดพลาด:
  • ใบแจ้งยอดโอน. หากคุณทำลายรหัสของคุณด้วยคำสั่ง return จะไม่มีการดำเนินการใดหลังจาก "return = true"
  • วนซ้ำไม่สิ้นสุด - ไม่มีโค้ดที่คุณเขียนหลังจากการวนซ้ำไม่สิ้นสุดที่จะถูกดำเนินการเช่นกัน เนื่องจากระบบจะทำซ้ำการดำเนินการวนซ้ำ ดังนั้น เมื่อแปลงรหัสของคุณเป็นรหัสไบต์ คอมไพลเลอร์จะส่งข้อผิดพลาดของรหัสที่ไม่สามารถเข้าถึงได้
เพื่อช่วยคุณตั้งค่าสถานะและแก้ไขปัญหาเหล่านี้ เรามาซูมดูกัน

คืนงบ

คำสั่ง return เป็นส่วนหนึ่งของกลุ่มคำหลัก Transfer ซึ่งหมายความว่าจะยุติวิธีการของคุณ มีประโยชน์ในการแยกฟังก์ชันและช่วยให้โค้ดของคุณสามารถอ่านได้และสะอาด อย่างไรก็ตาม เนื่องจากคุณไม่สามารถเพิ่มคำสั่งใหม่ให้กับฟังก์ชันหลังจาก return = true การพยายามดำเนินการต่อฟังก์ชันหลังจากคีย์เวิร์ดจะทำให้คุณมีข้อผิดพลาดคอมไพเลอร์ "รหัสที่ไม่สามารถเข้าถึงได้" ลองมาดูตัวอย่างการจัดการที่ไม่ถูกต้องของ “return = true” และวิธีที่คอมไพเลอร์ตอบสนอง
class GFG {
    public static void main(String args[])
    {

        System.out.println("My code will run");

        return;

        // ironically, this code will never run
        // here’s an unreachable code message a developer gets.
        System.out.println("My code will run");
    }
}
ต่อไปนี้คือวิธีการแสดงคำสั่ง return ในทางที่ผิดในคอมไพเลอร์:
prog.java:11: error: unreachable statement
System.out.println(“My code will run”);
^
1 error
เพื่อเสริมสิ่งที่คุณได้เรียนรู้ เราขอแนะนำให้คุณดูบทเรียนวิดีโอจากหลักสูตร Java ของเรา

งบแตก

คำสั่งแบ่งเป็นคำหลักอีกประเภทหนึ่งที่คุณต้องระวังเมื่อเขียนฟังก์ชัน Java ตามนิยาม คีย์เวิร์ด break ใช้เพื่อยุติการวนซ้ำ ในตัวอย่างด้านล่าง เมื่อนักพัฒนาออกจากลูป เขาจะไม่สามารถดำเนินการคำสั่งในบรรทัดที่ 8 ได้อีกต่อไป ดังนั้น คอมไพลเลอร์จะแสดงข้อผิดพลาดของคำสั่งที่ไม่สามารถเข้าถึงได้ นี่คือตัวอย่างโค้ดที่จะส่งผลให้เกิดคำสั่งโค้ดที่ไม่สามารถเข้าถึงได้:
public class JavaCodeGeeks
     {
    public static void main(String[] args) {
     for(int i=1;i<5;i++)
        {
        System.out.println(i);
        break;
        System.out.println("Code after break");
        }
    }
}
เมื่อดูข้อผิดพลาดจากมุมมองของคอมไพเลอร์ คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้
JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
                ^
1 error

แถลงการณ์ต่อไป

ดำเนินการต่อคือคีย์เวิร์ดควบคุมลูปที่ใช้เพื่อย้ำการกระทำ เมื่อใดก็ตามที่คุณต้องการให้การดำเนินการวนซ้ำเริ่มต้นจากศูนย์ด้วยตัวมันเอง ให้เพิ่มการดำเนินการต่อในโค้ดของคุณ คำสั่งนี้มีประโยชน์ในการช่วยนักพัฒนาเลือกว่าคำสั่งใดของลูปที่ต้องการวนซ้ำและคำสั่งใดที่พวกเขาไม่ต้องการให้ทำซ้ำ แม้ว่าการดำเนินการต่อจะเป็นคำหลักที่ตรงไปตรงมา แต่หากไม่มีความเข้าใจอย่างถ่องแท้เกี่ยวกับวิธีการทำงานนั้นจะทำให้นักพัฒนาติดกับดัก "รหัสที่ไม่สามารถเข้าถึงได้" เนื่องจากหลังจากพบการดำเนินการต่อ ระบบจะวนซ้ำ คำหลักจะไม่สามารถเข้าถึงคำสั่งที่ตามมาได้ สมมติว่าคุณมีรหัสต่อไปนี้:
public class JavaIsFun
{
    public static void main(String[] args) {
        for(int i=0;i<8;i++)
        {
            System.out.println(i);
            if(i==5)
            {
                continue;
                System.out.println("Coding after continue");
            }
        }
    }
}
ระบบจะไม่ดำเนินการคำสั่ง "การเข้ารหัสหลังจากดำเนินการต่อ" ของคุณ - คอมไพเลอร์จะแจ้งให้คุณทราบทันที
JavaIsFun.java:10: error: unreachable statement
                                System.out.println("Coding after continue");

ลูปไม่สิ้นสุด

สถานการณ์ที่คล้ายกับตัวอย่างกรณีการใช้คีย์เวิร์ด "break" และ "continue" คือกรณีของการวนซ้ำไม่สิ้นสุด เมื่อออกแบบการวนซ้ำไม่สิ้นสุด นักพัฒนาควรระลึกไว้เสมอว่าไม่มีคำสั่งใดจะทำงานหลังจากนั้น ดังนั้น หากคุณไม่ทำลายการวนซ้ำ โค้ดทั้งหมดที่เขียนหลังจากนั้นจะไม่สามารถเข้าถึงได้ ต่อไปนี้คือตัวอย่างที่น่าสนใจของการจัดการวนซ้ำที่ไม่ถูกต้องเพื่อตรวจสอบ:
public class JavaCodeGym
{
    public static void main(String[] args) {
        while(true)
        {
            System.out.println("Hey there");
        }
        System.out.println("Nice to see you");
    }
}
คุณเดาได้ไหมว่าข้อผิดพลาดซ่อนอยู่ที่ใด คอมไพเลอร์จะชี้ไปที่มันทันทีเมื่อคุณรันโค้ด:
//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
                System.out.println("Nice to see you");
เนื่องจากมีการวนซ้ำไม่สิ้นสุดก่อน คำ ว่า "ยินดีที่ได้รู้จัก"คำสั่งจะไม่ดำเนินการและส่งคืนข้อผิดพลาดของรหัสที่ไม่สามารถเข้าถึงได้

บทสรุป

เพื่อหลีกเลี่ยงรหัสที่ไม่สามารถเข้าถึงได้ คุณต้องตรวจสอบให้แน่ใจว่าคำสั่งระบบทั้งหมดของคุณไหลลื่นไหล ปัญหาโค้ดที่เข้าถึงไม่ได้ของ Java ส่วนใหญ่เกี่ยวข้องกับการจัดการคีย์เวิร์ดและการจัดการลูปที่ไม่ดี ในตอนท้ายของวัน การตรวจสอบรหัสของคุณอีกครั้งเป็นวิธีเดียวที่พยายามแล้วจริงเพื่อหลีกเลี่ยงข้อผิดพลาดของรหัสที่ไม่สามารถเข้าถึงได้ คุณไม่ควรท้อใจเพราะสิ่งเหล่านี้ นิสัยในการสร้างโค้ดจาวาที่ลื่นไหลนั้นมาพร้อมกับประสบการณ์และการฝึกฝนที่สั่งสมมาหลายปี ดังนั้น เข้าสู่ IDE และเริ่มสร้างผลิตภัณฑ์ซอฟต์แวร์ที่ยอดเยี่ยม
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ