更多課程 選擇中心
        Java培訓

        400-111-8989

        Java培訓 > Java教程  > 正文

        該如何避免Java出現錯誤?

        • 發布:Java培訓
        • 來源:Java教程
        • 時間:2017-10-19 11:25

        該如何避免Java 出現錯誤?

        1.“Cannot Return a Value From Method Whose Result Type Is Void”

        當一個void方法嘗試返回值時,就會發生此Java錯誤,例如在以下示例中:

        public static void move(){

        System.out.println("What do you want to do?");

        Scanner scan = new Scanner(System.in); int userMove = scan.nextInt(); return userMove;

        }public static void usersMove(String playerName, int gesture){ int userMove = move(); if (userMove == -1)

        { break;

        }

        通常,這可以通過更改方法簽名匹配返回語句中的類型來修正錯誤。

        在這種情況下,void的實例可以改為int:

        public static int move(){

        System.out.println("What do you want to do?");

        Scanner scan = new Scanner(System.in); int userMove = scan.nextInt(); return userMove;

        }

        2.“Non-Static Variable … Cannot Be Referenced From a Static Context”

        當編譯器嘗試從靜態方法訪問非靜態變量時,就會發生此錯誤:

        public class StaticTest { private int count=0; public static void main(String args[]) throws IOException {

        count++; //compiler error: non-static variable count cannot be referenced from a static context

        }

        }

        要修復“Non-Static Variable … Cannot Be Referenced From a Static Context”錯誤,可以做這兩件事:

        在簽名中聲明此變量為靜態。

        在靜態方法中寫代碼創建非靜態對象的實例。

        3.“Non-Static Method … Cannot Be Referenced From a Static Context”

        此問題發生在Java代碼嘗試在非靜態類中調用非靜態方法的情況下。

        例如,以下代碼:

        class Sample{ private int age; public void setAge(int a) {

        age=a;

        } public int getAge() { return age;

        } public static void main(String args[]) {

        System.out.println("Age is:"+ getAge());

        }

        }

        將返回錯誤:

        Exception in thread "main" java.lang.Error: Unresolved compilation problem:

        Cannot make a static reference to the non-static method getAge() from the type Sample

        從靜態方法中調用非靜態方法就是聲明調用非靜態方法的類的實例。

        4.“(array) Not Initialized”

        當數組被聲明但未初始化時,你將得到“(array) Not Initialized”的消息。數組的長度是固定的,因此每個數組都需要以所需的長度進行初始化。

        以下代碼就可以接受:

        AClass[] array = {object1, object2}

        即:

        AClass[] array = new AClass[2];

        ...array[0] = object1;array[1] = object2;

        而非:

        AClass[] array;

        ...array = {object1, object2};

        5.“ArrayIndexOutOfBoundsException”

        這是在代碼嘗試訪問不在值內的數組索引時發生的運行時錯誤消息。

        以下代碼將觸發此異常:

        String[] name = { "tom", "dick", "harry"};for (int i = 0; i <= ame.length; i++) {

        System.out.print(name[i] + '\n');

        }

        這是另一個例子

        int[] list = new int[5];list[5] = 33; // illegal index, maximum index is 4

        數組索引從零開始,結束于小于數組長度的那一個。通常,當定義數組索引的限制時,通過使用“<”而不是“<=”來修復。

        6.“StringIndexOutOfBoundsException”

        當代碼嘗試訪問不在字符串范圍內的字符串的一部分時,就會發生這種問題。

        通常,這發生在代碼嘗試創建字符串的子字符串,且長度與參數設置不符之時。

        例子:

        public class StringCharAtExample { public static void main(String[] args) {

        String str = "Java Code Geeks!";

        System.out.println("Length: " + str.length()); //The following statement throws an exception, because

        //the request index is invalid.

        char ch = str.charAt(50);

        }

        }

        和數組索引一樣,字符串索引從零開始。在索引字符串的時候,最后一個字符小于字符串的長度。

        “StringIndexOutOfBoundsException”Java軟件錯誤消息通常意味著索引正在嘗試訪問沒有包含的字符。

        7.“NullPointerException”

        當程序嘗試使用沒有賦值的對象引用時,就會出現“NullPointerException”異常。

        // A Java program to demonstrate that invoking a method// on null causes NullPointerExceptionimport java.io.*;class GFG{ public static void main (String[] args) { // Initializing String variable with null value

        String ptr = null; // Checking if ptr.equals null or works fine.

        try

        { // This line of code throws NullPointerException

        // because ptr is null

        if (ptr.equals("gfg"))

        System.out.print("Same"); else

        System.out.print("Not Same");

        } catch(NullPointerException e)

        {

        System.out.print("NullPointerException Caught");

        }

        }

        }

        Java程序經常在以下情況下出現異常:

        語句引用一個空值的對象。

        嘗試訪問一個已定義但未分配引用的類。

        8.“NoClassDefFoundError”

        當解釋器找不到包含主方法的類的文件時,將發生“NoClassDefFoundError”異常。示例:

        如果你編譯此程序:

        class A{ // some code}public class B{ public static void main(String[] args)

        {

        A a = new A();

        }

        }

        生成兩個.class文件:A.class和B.class。刪除A.class文件并運行B.class文件,你將得到NoClassDefFoundError的消息:

        Exception in thread "main" java.lang.NoClassDefFoundError: A

        at MainClass.main(MainClass.java:10)

        Caused by: java.lang.ClassNotFoundException: A

        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

        發生這種情況的原因有:

        文件不在正確的目錄內。

        類的名稱必須與文件的名稱相同(不包括文件擴展名)。名稱分大小寫。

        9.“NoSuchMethodFoundError”

        當Java軟件嘗試調用類的方法并且該方法不再有定義時,將發生此錯誤消息:

        Error: Could not find or load main class wiki.java

        當聲明中有錯字時,通常會出現“NoSuchMethodFoundError”Java軟件錯誤。

        10.“NoSuchProviderException”

        當請求的安全提供程序不可用時,會發生“NoSuchProviderException”異常:

        javax.mail.NoSuchProviderException

        當試圖找到為什么發生“NoSuchProviderException”時,請檢查:

        JRE配置。

        配置中設置的Java home。

        使用哪個Java環境。

        安全提供程序條目。

        11. AccessControlException

        AccessControlException表示所請求訪問的系統資源,如文件系統或網絡是被拒絕的。

        ERROR Could not register mbeans java.security.

        AccessControlException: WFSM000001: Permission check failed (permission "("javax.management.MBeanPermission" "org.apache.logging.log4j.core.jmx.LoggerContextAdmin#-

        [org.apache.logging.log4j2:type=51634f]" "registerMBean")" in code source "(vfs:/C:/wildfly-10.0.0.Final/standalone/deployments/mySampleSecurityApp.war/WEB-INF/lib/log4j-core-2.5.

        jar )" of "null")

        12.“ArrayStoreException”

        當Java數組中轉換元素的規則被破壞時,就會發生“ArrayStoreException”異常。

        對于放到數組中的內容一定要非常小心。

        例如,這個例子說明此程序:

        /* ............... START ............... */

        public class JavaArrayStoreException { public static void main(String...args) {

        Object[] val = new Integer[4];

        val[0] = 5.8;

        }

        } /* ............... END ............... */

        可以產生以下輸出:

        Exception in thread "main" java.lang.ArrayStoreException: java.lang.Doubleat ExceptionHandling.JavaArrayStoreException.main(JavaArrayStoreException.java:7)

        當數組被初始化時,我們需要聲明允許進入數組的對象的種類。 每個數組元素都需要成為相同類型的對象。

        13.“Bad Magic Number”

        此Java軟件錯誤消息意味著網絡上的類定義文件可能出錯了。

        示例:

        Java(TM) Plug-in: Version 1.3.1_01Using JRE version 1.3.1_01 Java HotSpot(TM) Client VM

        User home directory = C:\Documents and Settings\Ankur

        Proxy Configuration: Manual ConfigurationProxy: 192.168.11.6:80java.lang.ClassFormatError: SalesCalculatorAppletBeanInfo (Bad magic number)

        at java.lang.ClassLoader.defineClass0(Native Method)

        at java.lang.ClassLoader.defineClass(Unknown Source)

        at java.security.SecureClassLoader.defineClass(Unknown Source)

        at sun.applet.AppletClassLoader.findClass(Unknown Source)

        at sun.plugin.security.PluginClassLoader.access$201(Unknown Source)

        at sun.plugin.security.PluginClassLoader$1.run(Unknown Source)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.plugin.security.PluginClassLoader.findClass(Unknown Source)

        at java.lang.ClassLoader.loadClass(Unknown Source)

        at sun.applet.AppletClassLoader.loadClass(Unknown Source)

        at java.lang.ClassLoader.loadClass(Unknown Source)

        at java.beans.Introspector.instantiate(Unknown Source)

        at java.beans.Introspector.findInformant(Unknown Source)

        at java.beans.Introspector.(Unknown Source)

        at java.beans.Introspector.getBeanInfo(Unknown Source)

        at sun.beans.ole.OleBeanInfo.(Unknown Source)

        at sun.beans.ole.StubInformation.getStub(Unknown Source)

        at sun.plugin.ocx.TypeLibManager$1.run(Unknown Source)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)

        at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)

        at sun.plugin.ocx.ActiveXAppletViewer.statusNotification(Native Method)

        at sun.plugin.ocx.ActiveXAppletViewer.notifyStatus(Unknown Source)

        at sun.plugin.ocx.ActiveXAppletViewer.showAppletStatus(Unknown Source)

        at sun.applet.AppletPanel.run(Unknown Source)

        at java.lang.Thread.run(Unknown Source)

        “bad magic number”錯誤消息可能發生在以下情況下:

        類文件的前四個字節不是十六進制數字CAFEBABE。

        類文件以ASCII模式而不是以二進制模式上傳。

        Java程序在編譯之前運行。

        14.“Broken Pipe”

        此錯誤消息是指來自文件或網絡套接字的數據流已停止工作或從另一端關閉。

        Exception in thread "main" java.net.SocketException: Broken pipe

        at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:115) at java.io.DataOutputStream.write

        出現broken pipe的原因通常有:

        耗盡磁盤暫存空間。

        RAM可能被堵塞。

        數據流可能已損壞。

        讀取管道的過程可能已經關閉。

        感謝大家閱讀由java培訓機構分享的“該如何避免Java出現錯誤”希望對大家有所幫助,更多精彩內容請關注Java培訓官網

        免責聲明:本文由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:探究Java虛擬機棧
        下一篇:開發人員必備技能之一“性能優化”
        12大要點讓你的Java開發所向披靡~

        12大要點讓你的Java開發所向披靡~

        學習Java最好的12本免費在線電子書

        學習Java最好的12本免費在線電子書

        Java常用日志框架介紹

        Java常用日志框架介紹

        一篇文章了解RPC框架原理

        一篇文章了解RPC框架原理

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        貴州省

        福建省

        • 達內廈門軟件園中心
        廣西省

        海南省

        国产高清情侣视频2019年,限制电影福利在线观看,23伊人大香蕉 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>