编程中的运行时与编译时间

时间:2014-04-11 14:45:36

标签: java compiler-construction

我想知道有关运行时和编译时之间差异的详细信息。什么是运行时错误和编译时错误?它们之间有什么区别?

2 个答案:

答案 0 :(得分:3)

编译时异常或错误是代码中的错误,这些错误对编译器来说是显而易见的,这会导致程序损坏。任何值得盐的IDE都会自动标记这些错误,甚至不会尝试构建。

运行时异常是代码中的错误,这些错误不一定是无效的代码,但是当程序运行时会导致状态不加起来,尝试非法操作或某些变量为null什么东西试图使用它。 IDE可能会或可能不会发现这些错误,它们是迄今为止难以追踪的类型。这是习惯使用调试器非常重要的地方。

总结:
编译时:尝试构建/编译代码时 运行时:使用已构建的代码时。

答案 1 :(得分:0)

运行时错误是编译后发生的一种错误。假设你有一个遍历数组的循环。但是你的逻辑有点偏差而且你不小心走出界限(IndexOutOfBoundsException),编译器不知道这会发生,因为它不会查找由程序员或用户引起的逻辑错误这条路。由空引用引起的NullPointerExceptions是另一个运行时错误。编译时错误可能是语法错误;例如,缺少分号。

如果您想了解已检查和未检查的例外,请阅读本文,http://www.javapractices.com/topic/TopicAction.do?Id=129

它解释了已检查和未检查的异常之间的区别,这可能有助于您了解异常类型之间的差异及其原因。

在代码调用方面,大部分是在编译时完成的。实例化对象时,或调用它的方法。这些都编译成指令并在编译时准备好。但是,如果要在运行时调用某些内容,可以使用所谓的反射实例化对象,或在运行时调用方法。

http://www.programcreek.com/2013/09/java-reflection-tutorial/这篇文章可能对反思有用。