IDE是否在运行之前识别所有编译错误?

时间:2012-09-17 21:06:47

标签: java netbeans

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

5 个答案:

答案 0 :(得分:0)

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

没有。 EditPlus未显示任何编译时错误。

Eclipse / Netbeans,基于设置输出将是不同的。

答案 1 :(得分:0)

  

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

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

通常,大多数情况下你应该运行编译而没有任何错误。虽然Eclipse“伪造它”的能力偶尔会很方便,但在我看来,养成使用它而不是修复错误的习惯是个坏主意。

编辑:如果问题是“我是否总是知道是否存在任何编译时错误”,那么是的,假设你不要盲目地忽略Eclipse给你的警告。我不知道任何IDE将静默让你运行带有编译时错误的代码。(你当然也应该看看Errors视图,或者你的IDE提供的任何东西)。 )

答案 2 :(得分:0)

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

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

希望这会有所帮助。 :)

答案 3 :(得分: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
}

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

答案 4 :(得分:-1)

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