1

我最近一直在想一些事情。它是关于像 netbeans 这样的 IDE 在我们输入代码时向我们显示的错误(假设是 java)。我想知道 IDE 是否能够在我们输入时识别所有编译时错误? 这意味着如果我们使用 IDE 运行代码,我们应该只得到运行时错误吗?

4

5 回答 5

1

如果 IDE 支持它,它会在您单击“编译”之前告诉您代码中的所有错误。这适用于所有 IDE,如果我没记错的话,有些还会给你编译器本身返回的任何错误。

这实际上完全取决于您的 IDE、设置,有时还取决于编译器。

希望这可以帮助。:)

于 2012-09-17T21:10:20.487 回答
0

它基于您所指的 IDE 及其设置。

EditPlus。不显示任何编译时错误。

Eclipse/Netbeans,根据设置输出会有所不同。

于 2012-09-17T21:09:16.253 回答
0

这意味着如果我们使用 IDE 运行代码,我们应该只得到运行时错误吗?

这取决于 IDE。例如,在 Eclipse 中,如果在您尝试运行代码时出现任何编译时错误,它会对此发出警告,但如果您愿意,仍允许您继续。此时,任何成功编译的代码都将正常执行——但任何无法编译的方法或类都将失败表示为生成的代码抛出的异常。抛出异常的确切位置取决于编译失败的类型。

一般来说,大多数时候你应该运行编译没有任何错误的代码。虽然 Eclipse 的“伪造”功能有时很方便,但在我看来,养成使用它的习惯而不是随时修复错误将是一个坏主意。

编辑:如果问题是“我是否总是知道是否有任何编译时错误”,那么是的,假设您不会盲目地忽略 Eclipse 给您的警告。我不知道有任何 IDE 可以您在其中运行带有编译时错误的代码。(当然,您还应该查看错误视图,或者您的 IDE 碰巧提供的任何内容。)

于 2012-09-17T21:09:30.160 回答
0

这很简单:

如果您的 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
}

现在编译器有办法知道将要传递和转换的内容,因此它始终是运行时错误。

于 2012-09-17T21:15:21.167 回答
-2

在您键入时,您的 IDE 会在您完成一个单词或类似内容后编译您的代码。这样,它就能够向您显示编码错误,例如不存在的变量或其他编译时错误。您的 IDE 使用您配置的 Java 编译器来执行此操作。当您尝试在命令行上使用 javac 编译不正确的代码时,它还会为您提供有关错误的信息。IDE 执行相同的操作,解析从 javac 获取的信息并在代码中突出显示它们。

于 2012-09-17T21:14:31.353 回答