我正在研究断言,所以写了下面的代码
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;
}
}
在控制台输出之前,我得到以下对话框
输出:
Exception in thread "main" java.lang.AssertionError: 7
at logicBuliding.AssertionDemo.<clinit>(AssertionDemo.java:8)
对话框怎么了?
答案 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)