为什么运行时错误很难找到编译时错误

时间:2015-01-18 14:27:39

标签: java runtime

根据java Doc,泛型的一个优点是 在编译时更强的类型检查。 Java编译器将强类型检查应用于通用代码,并在代码违反类型安全性时发出错误。修复编译时错误比修复运行时错误更容易,这很难找到。

为什么运行时错误很难找到编译时错误?

3 个答案:

答案 0 :(得分:3)

  • 因为编译器无法编译无效代码。虽然您可以执行一周的应用程序,但实际上从未执行过有错误的代码。
  • 因为编译器指定得很好并且输出清晰的,众所周知的错误消息,而错误的代码可以显示许多奇怪的行为:从具有错误颜色的像素到异常,或者数据库不一致。
  • 因为你经常编译,因此编译错误来自你刚写的代码,而运行时错误可能来自2年前由其他10个人编写的代码。
  • 因为,正如bearteach在评论中所说,错误可能来自用户输入,或当前时间,或任何在分析错误时不再知道的动态输入或环境
  • ...

答案 1 :(得分:2)

编译代码时,会立即看到编译错误。编译器会告诉您错误是什么。

另一方面,

运行时错误只能在运行代码时发现。有时它们会导致应用程序崩溃,而有时它们会导致意外行为。在发现运行时错误之前,代码甚至可能会运行多年。为了找到运行时错误,您必须测试和调试代码,这会花费时间。

答案 2 :(得分:1)

编译时错误很容易被发现,因为编译器为编译提供了完整的结构化树,因此很容易检查语法或逻辑智能错误,因为你必须将模式与代码匹配。

运行代码时处于执行模式并创建缓冲区以便执行,并在程序执行后删除。所以我们需要显式调试以在运行时获取错误。或者我们必须使用一些工具来捕获运行时数据并为我们准备日志信息。

毕竟我们必须再次修改代码并重新编译。它适用于小型软件,但对于大型软件来说很难,因此在编译时检查错误总是比运行时更好。