如果你使用javac来编译它,它就不会编译:
stephen@blackbox tmp]$cat > Test.java
public class Test {
public static void main(String[] args) {
System.out.println("started");
//func();
}
static void func(){
double d;
int i;
System.out.println("d ="+d);
System.out.println("i ="+i);
}
}
[stephen@blackbox tmp]$javac Test.java
Test.java:12: error: variable d might not have been initialized
System.out.println("d ="+d);
^
Test.java:13: error: variable i might not have been initialized
System.out.println("i ="+i);
^
2 errors
[stephen@blackbox tmp]$
我的猜测是你正在使用IDE,并且你在过去的某个时刻告诉IDE,尝试运行编译错误的程序是可以的.这是通过将编译错误的“编译”方法实现为在调用时抛出异常的字节码来实现的.当您注释掉对faulty方法的调用时,它不会被调用…自然……并且不会抛出异常.
但最重要的是你得到了编译错误.你刚刚告诉IDE忽略它.
解决方案很明显.修复编译错误.