CodeGym /Java Blog /Toto sisi /Java中無法訪問的語句代碼錯誤
John Squirrels
等級 41
San Francisco

Java中無法訪問的語句代碼錯誤

在 Toto sisi 群組發布
無法訪問的代碼語句是 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 課程中的視頻課程

中斷語句

Break 語句是編寫 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

繼續聲明

Continue 是一個循環控制關鍵字,用於重複操作。每當您希望循環的執行自己從頭開始時,請將 continue 添加到您的代碼中。該語句有助於開發人員選擇他們想要重複的循環語句以及他們不會放入迭代中的語句。儘管 continue 是一個簡單易用的關鍵字,但如果不完全了解它的工作原理,開發人員就會陷入“無法訪問的代碼”陷阱。因為,遇到continue後,系統會重複循環,關鍵字將無法到達其後的語句。說,你有以下代碼:

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");
            }
        }
    }
}
系統不會執行你的“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");
‘
由於在"Nice to see you" 之前有一個無限循環,該語句將永遠不會執行並繼續返回無法訪問的代碼錯誤。

結論

為避免無法訪問的代碼,您需要確保所有系統語句都有流。大多數 Java 無法訪問的代碼問題都與處理關鍵字和管理循環不當有關。歸根結底,仔細檢查您的代碼是避免無法訪問的代碼錯誤的唯一可靠方法。您也不應因它們而氣餒——創建流暢的 Java 代碼的習慣來自於多年的經驗和實踐。那麼,讓我們打開 IDE 並開始構建出色的軟件產品。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION