编译时间与运行时错误

uml*_*uml 3 java runtime compile-time

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

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

Cas*_*roy 13

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

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

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

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

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

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


小智 6

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

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


Mar*_*nik 5

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

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

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