编译时间与运行时错误

时间:2012-10-14 12:58:48

标签: java runtime compile-time

  

可能重复:
  Runtime vs Compile time

我应该如何知道Java中的特定代码行是否会抛出编译时或运行时错误?假设特定的代码行无论如何抛出并出错。

5 个答案:

答案 0 :(得分:13)

在Eclipse中,编译时错误将以红色下划线。编译时错误是编译器检测到的错误。编译时错误的常见原因包括:

  • 语法错误,例如缺少分号或使用保留关键字(例如'class')。
  • 当您尝试访问不在范围内的变量时。
  • 声明多个具有相同名称的对象时。

如果编译器在编译期间检测到任何错误,则无法构建新的程序集(或Java中的类文件)。

即使您的代码没有编译时错误,运行时仍可能发生错误。诸如“逻辑错误”和“运行时错误”之类的错误。运行时错误的一个很好的例子如下:

  • 假装你要在索引5的数组中存储一个项目,但是数组的大小只有4.编译器不会在这里检测到错误,因为它知道数组大小可能会发生变化但是在运行时 - 时间你会被抛出异常。

要检测确切地发生运行时错误的行,可以在Eclipse中使用断点组合并进行适当的异常处理。

答案 1 :(得分:6)

要查看您的代码是否未编译,请尝试编译它。编译器会抱怨。

要查看您的代码是否包含运行时错误,请编写单元测试。

答案 2 :(得分:5)

实际上,每一行代码都可能在理论上引发运行时异常,并且没有“抛出编译时错误”这样的事情。我相信您已将编译器错误与运行时异常混为一谈。

无论如何,编译器错误很简单:编译并查看。关于它们永远不会有任何“可能”:一行代码肯定会或者不会产生编译器错误。

至于运行时错误,您可以做的最好是静态分析和猜测一行代码是否会导致错误。有些案例显而易见,例如throw new RuntimeException()null.toString(),但大多数情况并非需要很好的经验来分析而不执行。

答案 3 :(得分:2)

最好的方法是编译它,然后大多数编译器会指出所有的编译时错误。另一方面,运行时错误需要开发人员付出更多努力。

某些编译器会告知用户可能引发的异常,但查找特定代码行是否包含运行时的最佳方法是使用不同的输入运行它们并观察结果(即使用单元测试,完整性测试等)。

答案 4 :(得分:0)

编译代码时,您会看到编译时错误。运行代码可能会显示运行时错误。