2014-09-11 92 views
0

我剛剛在Java中調查斷言,現在我正試圖弄清楚如果Eclipse中的斷言是真的,我們如何查看消息。代碼如下:Java - 如何在Eclipse中查看斷言消息

public class TheAssertClass { 

    public TheAssertClass(){ 

     int y = 5; 
     int x = 4; 

     assert (y > x): "y is too big. y = " + y; 
    } 

    public static void main(String[] args){ 
     TheAssertClass go = new TheAssertClass(); 

     System.out.println("The program ran"); 
    } 

} 

控制檯只顯示「程序運行」。我不完全確定我是否正確使用了它?

謝謝。

+0

你應該斷言*假設*爲真的事情。在這裏你想斷言'y 2014-09-11 04:06:25

+0

但是不是y大於x(y> x)所以它是真的? – jonprasetyo 2014-09-11 04:09:23

+0

是的,'y> x'是真的,這很好。你*斷言* y> x'。實際上,'assert'聲明說「如果這不是真的,結束我的程序」。 – 2014-09-11 04:10:33

回答

2

您可能未在JVM級別啓用斷言(使用-ea開關)。 如果你還沒有,那麼這將解釋你所看到的行爲。嘗試使斷言失效並查看控制檯上是否顯示任何內容。

也看看下面的問題&回答更多的細節: *請參閱What does the "assert" keyword do?

+0

謝謝我在Eclipse的運行配置中啓用了vm參數「-ea」,現在它可以工作。 – jonprasetyo 2014-09-11 04:22:05

+0

然而,它會帶來一個例外,我認爲這是一個例外。 (如果它返回false) – jonprasetyo 2014-09-11 04:22:31

+0

也許......我會解釋。它應該拋出一個AssertionError(Throwable的子類),它也會給出一個堆棧跟蹤。異常也是Throwable的子類,但是是錯誤的兄弟。 Throwable的所有衍生物都可以包含堆棧跟蹤。所以我懷疑你看到一個堆棧跟蹤,因此稱它爲異常,而你實際上得到了一個斷言**錯誤**。如果你有一個AssertionError,那麼是的,這是正確的。如果你有其他的例外,那麼不,你發生了其他事情。什麼是例外?所以這取決於你實際得到了什麼,因此'可能'! – roj 2014-09-11 21:46:30

0

信息如何在Eclipse中啓用斷言:

Run -> Run Configuration -> Java Application -> Arguments (2nd tab) -> VM arguments -> -ea

電子藝界=啓用斷言。