2016-04-06 83 views
0

由於else子句中的錯誤,下列Java程序無法編譯。NetBeans運行帶編譯時錯誤的Java程序

public class Temp1 { 
public static void main(String[] args) { 
    if (args.length == 0) 
    { 
     System.out.println("PASS"); 
    } 
    else{ 
     COMPILEERROR 
    } 
} 

}

然而,當在NetBeans中運行,被通知的錯誤,點擊後「仍然運行」程序運行和輸出「PASS」。當條件不滿足時(ARGS> 0)的情況下拋出RuntimeException:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - not a statement 

如何NetNeans運行不可編譯的代碼?它運行的是解釋器/ JIT編譯器還是類似的東西?

這是一個新功能,因爲我不記得過去?

+1

推測它消除了不可達/不可編譯代碼,並用其替換一個'扔'。 –

+1

@ElliottFrisch謝謝!我證實你是正確的,我在你的回答中記入了你。如果您想得到您的答案的功勞,請這樣做,我會刪除我的答案。 – Jonathan

+0

沒問題。這很好,我拿了一個WAG;你真的檢查。 –

回答

3

如@ElliottFrisch評論的,NetBeans的去除不可達/不可編譯代碼,並用一拋

這裏是反編譯的代碼替換它:

/* 
* Decompiled with CFR 0_114. 
*/ 
package temp1; 

import java.io.PrintStream; 

public class Temp1 { 
    public static void main(String[] args) { 
     if (args.length != 0) { 
      throw new RuntimeException("Uncompilable source code - not a statement"); 
     } 
     System.out.println("PASS"); 
    } 
}