0

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

4

4 回答 4

6

一般来说,在软件开发过程中越早发现错误,修复它们就越快/更容易/更便宜。通常,编译器错误或警告会准确指出代码中问题所在的行,而在运行时定位错误通常是一个更加漫长和费力的过程。此外,该错误也可能在一段时间内没有出现(“潜在”错误),因此您可能需要在将来的某个时候花费额外的精力来提供客户支持、随错误修复,处理由此造成的声誉损失等。

于 2012-04-23T20:55:42.683 回答
2

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

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

最后归结为尽快找到错误,以便您可以在代码记忆犹新时修复它们。

于 2012-04-23T20:57:59.733 回答
1

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

于 2012-04-23T21:00:09.957 回答
1

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

基本上编译时错误意味着编写的代码无法构建,因为存在语法错误(错字)或类型错误(以错误的方式调用或使用变量类型)等,编译器无法继续。尽管如今的编译器尽最大努力识别所有类型的错误,甚至是潜在的运行时错误,因为与在调试过程中相比,在编写代码时纠正这些问题要便宜得多且耗时更少。通常在可以进行基本“运行时”分析的编译器中,您会收到警告,这是编译器告诉您它认为您的代码被抬高的方式。它仍然建立在警告场景中,但警告始终是您应该注意的。

发生运行时错误是因为尽管代码可能正确,但逻辑不正确,或者编译器在构建期间无法知道进入代码的参数(想想用户输入)。运行时错误的示例包括无限循环、越界错误、类型错误(认为用户在要求输入数字时输入了字符串)和许多其他错误。

最重要的是,任何时候我们都可以知道错误的生成,而不是在我们完成之后,我们可以保持我们的代码更清洁和更有效。我希望这有帮助。:)

于 2012-04-23T21:14:26.543 回答