编译时间与运行时错误

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

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

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

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

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

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

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

要确定哪一行确实发生了运行时错误,可以在Eclipse中使用断点组合并进行适当的exception处理。

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

要查看代码是否包含运行时错误,请编写unit testing。

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

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

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

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

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

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