我正在阅读有关运行时错误和编译错误的信息
Runtime vs Compile time和 How exactly does java compilation take place?
我可以推断的是,在编译期间,编译器不会检查逻辑,而只会检查语法和拼写错误,以及在运行时检查逻辑的位置以及如何实现这些逻辑等。例如除以零,内存不够。
因此,如果我的理解是正确的,那么仅在编译阶段才会出现编译错误,而仅在执行程序时才会出现运行时错误。
例如让我考虑一个简单的程序
public class Try {
public static void main(String[] args) {
System.out.println("My first program");
}
}
现在,当我在这个阶段编译(即 javac )时,如果产生任何错误,那么这些错误称为编译错误,在此期间会检查语法和拼写错误。
将字节码转换为本地/机器代码(例如 java )的过程中产生的错误称为运行时错误,在此期间检查程序逻辑。
因此,只有在执行开始时才会出现编译错误,只有在第二阶段(即将字节码转换为机器码)才会出现运行时错误。
如果我的理解有误,请指正...
最佳答案
一个简单的例子:
String myString = null;
myString.substring(..)
上面的代码在语法和类型方面都是正确的,编译器没有显示错误。但是,当您使用此代码执行程序(运行程序)时,会出现明显的运行时错误。编译器不够智能,无法检测到这些错误,如果您想在开发周期的早期捕获这些错误(更好的是在客户端执行程序之前:P),可以使用静态分析工具等工具,或者更好的是自动测试。
关于java - 需要澄清编译错误和运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21632281/