Akh*_*ain 1 java eclipse assert runtime-error exception
我正在研究断言,所以写了下面的代码
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台输出之前,我得到以下对话框

OUTPUT:
Exception in thread "main" java.lang.AssertionError: 7
at logicBuliding.AssertionDemo.<clinit>(AssertionDemo.java:8)
Run Code Online (Sandbox Code Playgroud)
对话框怎么了?
我怀疑这不是关于断言的具体内容 - 它只是main在启动应用程序时甚至无法获得该方法.在大多数情况下,这将表明一个非常严重的错误,并且启动器代码可能没有太多信息可以轻易地提供它到底有多远.显示一个对话框可能比依赖已经连接的控制台更安全(鉴于我们肯定处于糟糕的情况).
这是一个稍微简单的程序,其行为方式相同:
public class Test {
static {
if (true) {
throw new RuntimeException("Bang!");
}
}
public static void main(String[] args) {
}
}
Run Code Online (Sandbox Code Playgroud)
您不需要Eclipse来演示这一点 - 只需使用javaw将产生相同的效果,如文档所述.与运行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)
Run Code Online (Sandbox Code Playgroud)