断言不按我在java中的思路工作

Moh*_*hit 0 java

我是java新手..所以也许这就是为什么我没有得到关键字正确?

所以..我从该银行客户示例中写了一个快速类.其中一个方法是撤销.

public void withdraw(double d){
        double diff = balance - d;
        assert (diff>=0 ) :" Insufficient funds!";
        balance = diff;
    }
Run Code Online (Sandbox Code Playgroud)

所以我想要的是如果撤销的数量大于余额......然后抛出一个错误......(我认为应该更像是一个例外......但是我想说我想通过断言来检查这个) ...

但它没有做任何事情......即使差异小于零..

代码编译好..而我期待它抛出一个错误.

我究竟做错了什么

Nat*_*yan 5

默认情况下禁用断言.您可以通过在调用JVM时传递-enableassertions标志来启用所有断言.

[编辑]

您可以在此处找到Java Programming with Assertions指南.请注意启用和禁用断言的位.

  • @Fraz 在 Eclipse 中:运行 -> 运行配置 -> 参数(选项卡)-> VM 参数 -> 输入 `-ea` 或 `-enableassertions` (2认同)
  • 您还可以通过在Eclipse首选项中转到Java> JUnit并选中"add -ea to VM arguments"来轻松添加到所有JUnit测试 (2认同)

Has*_* K. 5

默认情况下不启用断言,您需要在运行Java应用程序时显式启用它们,例如

java -ea SomeClass
Run Code Online (Sandbox Code Playgroud)