为什么在编译时而不是在运行时发现错误更好?

时间:2012-04-23 20:53:12

标签: compiler-errors

为什么在编译时而不是在运行时找到错误会更好?我在这里和其他地方搜索相同的主题,但没有找到一个体面的答案。

4 个答案:

答案 0 :(得分:6)

通常情况下,您发现软件开发过程中较早的错误会更快/更容易/更便宜地修复它们。通常,编译器错误或警告会将您指向问题所在的代码中的行,而在运行时查找错误通常会是一个更加冗长和费力的过程。此外,也可能是这个错误没有出现一段时间(一个“潜在的”错误)的情况,因此您可能需要在将来的某个时候花费额外的努力来提供客户支持,使用错误修复,处理由此造成的声誉损失等等。

答案 1 :(得分:2)

基本上,由于编译器在每次编译时都会遍历所有代码,因此每次编译时都会自动发现它可以检测到的任何错误。

查找错误运行时意味着您必须运行所有代码来检测错误,这可能很棘手,尤其是对于具有许多有条件执行分支的代码。此外,精确定位错误的确切位置可能非常棘手。

最后它归结为尽快找到错误,所以你可以修复它们,同时代码在你脑海中浮现。

答案 2 :(得分:1)

另外,添加@Paul R所说的,编译错误“更容易”注意到(您只需编译代码并vo),而运行时错误可能特定于用例场景,这可能会导致崩溃系统部署时。想想影响...

答案 3 :(得分:1)

有两种类型的错误,编译时间和运行时间。最好是,您希望在编译时发生错误,因为这些错误更容易诊断和纠正。

基本上编译时错误意味着无法构建编写的代码,因为存在语法错误(拼写错误)或类型错误(以错误的方式调用或使用变量类型)等,并且编译器无法继续。这些天编译器虽然尽力识别所有类型的错误,甚至是潜在的运行时错误,因为在编写代码而不是在调试过程中纠正这些问题要便宜得多,耗时少。通常在可以进行基本“运行时”分析的编译器中,您将收到警告,这是编译器告诉您它认为您的代码被抬高的方式。它仍然建立在一个警告场景中,但警告总是你需要付出的代价。

发生运行时错误是因为虽然代码可能是正确的,但逻辑不正确,或者编译器在构建过程中无法知道进入代码的参数(想想用户输入)。运行时错误的示例包括无限循环,超出范围错误,类型错误(想想用户在被要求输入数字时输入字符串)以及许多其他错误。

最重要的是,任何时候我们都可以在生成错误时了解错误,而不是在完成错误之后,我们可以使代码更清晰,更有效。我希望这有帮助。 :)