我最近一直在想一些事情。它是关于像 netbeans 这样的 IDE 在我们输入代码时向我们显示的错误(假设是 java)。我想知道 IDE 是否能够在我们输入时识别所有编译时错误? 这意味着如果我们使用 IDE 运行代码,我们应该只得到运行时错误吗?
5 回答
如果 IDE 支持它,它会在您单击“编译”之前告诉您代码中的所有错误。这适用于所有 IDE,如果我没记错的话,有些还会给你编译器本身返回的任何错误。
这实际上完全取决于您的 IDE、设置,有时还取决于编译器。
希望这可以帮助。:)
它基于您所指的 IDE 及其设置。
不EditPlus
。不显示任何编译时错误。
Eclipse/Netbeans,根据设置输出会有所不同。
这意味着如果我们使用 IDE 运行代码,我们应该只得到运行时错误吗?
这取决于 IDE。例如,在 Eclipse 中,如果在您尝试运行代码时出现任何编译时错误,它会对此发出警告,但如果您愿意,仍允许您继续。此时,任何成功编译的代码都将正常执行——但任何无法编译的方法或类都将失败表示为生成的代码抛出的异常。抛出异常的确切位置取决于编译失败的类型。
一般来说,大多数时候你应该运行编译没有任何错误的代码。虽然 Eclipse 的“伪造”功能有时很方便,但在我看来,养成使用它的习惯而不是随时修复错误将是一个坏主意。
编辑:如果问题是“我是否总是知道是否有任何编译时错误”,那么是的,假设您不会盲目地忽略 Eclipse 给您的警告。我不知道有任何 IDE 可以让您在其中运行带有编译时错误的代码。(当然,您还应该查看错误视图,或者您的 IDE 碰巧提供的任何内容。)
这很简单:
如果您的 IDE 有能力,它会查看您编写的内容并查看它是否符合规范但是......
某些时候,您编写的内容将无法检查,即将对象显式转换为您传入错误类型(即 typecastexception)的类型。
编译器可以知道一些东西,即
int a = "abc"; // obviously wrong because "abc" is a string and not an int(eger) and COMPILE time
无法知道某些事情(编辑:如果您将 true 传递给 findTheRunTimeError,您将收到 RUNTIME 错误)
int a;
public someFunction(object passedIn, bool findTheRuntimeError)
{
if(!findTheRuntimeError)
{
return;
}
a = (string)passedIn;// obviously wrong cast because passedIn is cast to a string which is not an int(eger) and RUNTIME
}
现在编译器有办法知道将要传递和转换的内容,因此它始终是运行时错误。
在您键入时,您的 IDE 会在您完成一个单词或类似内容后编译您的代码。这样,它就能够向您显示编码错误,例如不存在的变量或其他编译时错误。您的 IDE 使用您配置的 Java 编译器来执行此操作。当您尝试在命令行上使用 javac 编译不正确的代码时,它还会为您提供有关错误的信息。IDE 执行相同的操作,解析从 javac 获取的信息并在代码中突出显示它们。