我最近一直想知道一些事情。这是关于我们键入代码时让像netbeans这样的IDE显示的错误(让我们假设java)。我想知道IDE是否能够识别所有编译时错误我们打字的时候?这意味着如果我们使用IDE运行代码,我们是否应该只获得运行时错误?
答案 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获取的信息并在代码中突出显示它们。