3

可能重复:
运行时与编译时

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

4

5 回答 5

13

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

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

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

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

  • 假设您要将一个项目存储在索引 5 处的数组中,但该数组的大小仅为 4。编译器不会在此处检测到错误,因为它知道数组大小可能会发生变化,但在运行时您'会抛出异常。

要检测哪一行发生了运行时错误,您可以结合使用 Eclipse 中的断点和适当的异常处理。

于 2012-10-14T13:08:04.740 回答
6

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

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

于 2012-10-14T13:01:41.453 回答
5

实际上,理论上每一行代码都可能抛出运行时异常,并且不存在“抛出编译时错误”之类的东西。我相信您将编译器错误与运行时异常混为一谈。

无论如何,编译器错误很容易:编译它并查看。它们从来没有任何“可能”:一行代码肯定会或不会产生编译器错误。

至于运行时错误,你能做的最好的就是静态分析和猜测一行代码是否会导致错误。有些情况很明显,例如throw new RuntimeException()or null.toString(),但大多数情况并非如此,并且需要丰富的经验才能在不执行的情况下进行分析。

于 2012-10-14T13:02:21.340 回答
2

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

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

于 2012-10-14T13:01:42.587 回答
0

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

于 2012-10-14T13:03:05.520 回答