2014-09-11 49 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

电子艺界=启用断言。