断言静态块Eclipse-java

时间:2012-12-22 17:04:33

标签: java eclipse exception runtime-error assert

我正在研究断言,所以写了下面的代码

public class AssertionDemo
{
    static
    {
        int i=7;
        assert i>10:i;
    }
 public static void main(String args[])
 {
     int i=8;
     assert (i<10):8;
     assert (i>10):9;
 }
}

在控制台输出之前,我得到以下对话框

enter image description here

输出:

Exception in thread "main" java.lang.AssertionError: 7
at logicBuliding.AssertionDemo.<clinit>(AssertionDemo.java:8)

对话框怎么了?

1 个答案:

答案 0 :(得分:5)

我怀疑这不是关于断言的具体内容 - 它只是在启动应用程序时甚至无法获得main方法。在大多数情况下,这将表明一个非常严重的错误,并且启动器代码可能没有太多信息可以轻易地提供它到底有多远。显示一个对话框可能比依赖已经连接的控制台更安全(假设我们肯定处于糟糕的情况)。

这是一个稍微简单的程序,其行为方式相同:

public class Test {
    static {
        if (true) {
            throw new RuntimeException("Bang!");
        }
    }

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

您不需要Eclipse来演示这一点 - 只需使用javaw即可获得相同的效果,as documented。从命令行运行java只会显示异常,对我来说:

c:\Users\Jon\Test>java Test
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Bang!
        at Test.<clinit>(Test.java:4)