【发布时间】:2014-02-07 15:59:05
【问题描述】:
我正在阅读来自
的运行时错误和编译错误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 )的过程中产生的错误称为运行时错误,在此过程中会检查程序逻辑。
因此,只有在执行开始时才会出现编译错误,而只有在第二阶段(即将字节码转换为机器码)时才会出现运行时错误。
如果我的理解有误请指正...
【问题讨论】:
-
“仅在执行开始时出现编译错误” - 否 - 仅在编译时出现。运行时错误 - 否 - 未转换为机器代码 - 运行程序时出现逻辑错误
-
编译器做的不仅仅是语法检查。例如,它会进行类型检查,因此在执行之前会发现许多逻辑错误。
标签: java compiler-construction compiler-errors jvm