为什么';java编译器显示一个明显的被零除的警告?

为什么';java编译器显示一个明显的被零除的警告?,java,compiler-construction,compiler-warnings,Java,Compiler Construction,Compiler Warnings,这只是我的好奇,我想知道为什么java编译器在这种情况下不显示任何警告,而显示未检查操作的警告,以预测可能的ClassCastException public class DivideByZero { public static void main() { int number = 3/0; System.out.println(number); } } 以上代码保证生成算术异常 这只是一个例子。 有更多的方法可以保证编译期间无任何警告的运行时异

这只是我的好奇,我想知道为什么java编译器在这种情况下不显示任何警告,而显示未检查操作的警告,以预测可能的ClassCastException

public class DivideByZero {
    public static void main() {
        int number = 3/0;
        System.out.println(number);
    }
}
以上代码保证生成算术异常

这只是一个例子。
有更多的方法可以保证编译期间无任何警告的运行时异常。

因为从技术上讲,被零除是一个有效的程序。编译器只确定程序的有效性,而不确定是否存在运行时问题。如果编译器不允许您使用零除编译程序,这在技术上是不正确的,因为它是有效的。

因为Java编译器不是无限智能的。相关:因为编译器不能规定什么是“错”什么是“对”。您可能会认为零除是错误的,但其他人可能会不这么认为。因此,在这种情况下,得到警告对他们来说很烦人。这正是他要求警告的原因。@SLaks错过了关于警告的部分:\@SLaks为什么要得到关于完全有效和正确使用代码的警告?这更像是一项类似于checkstyle的工作。例如,一个可能的classcast异常值得警告,因为它可能是一个糟糕的编程。而除以零则不是。