Compiler errors 为什么在编译时发现错误比在运行时更好?

Compiler errors 为什么在编译时发现错误比在运行时更好?,compiler-errors,Compiler Errors,为什么在编译时发现错误比在运行时更好?我在这里和其他地方搜索了同样的话题,但没有找到一个像样的答案 通常情况下,在软件开发过程中,越早发现bug,修复它们的速度就越快/越容易/越便宜。通常,编译器错误或警告会将您精确地指向问题所在的代码行,而在运行时查找错误通常是一个更漫长、更费力的过程。此外,该漏洞可能在一段时间内不会显示为潜在的漏洞,因此您可能需要在未来的某个时候花费额外的精力来提供客户支持、提供带有漏洞修复的软件更新、处理由此造成的声誉损失等。基本上,由于编译器在每次编译时都会检查所有代码

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

通常情况下,在软件开发过程中,越早发现bug,修复它们的速度就越快/越容易/越便宜。通常,编译器错误或警告会将您精确地指向问题所在的代码行,而在运行时查找错误通常是一个更漫长、更费力的过程。此外,该漏洞可能在一段时间内不会显示为潜在的漏洞,因此您可能需要在未来的某个时候花费额外的精力来提供客户支持、提供带有漏洞修复的软件更新、处理由此造成的声誉损失等。

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

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


最后,要尽快找到bug,这样你就可以在代码新鲜的时候修复它们。

此外,再加上@Paul R所说的,编译错误更容易被注意到,你只需编译代码,瞧,运行时错误可能是特定于用例场景的,这可能会使您的系统在部署时崩溃。考虑一下影响…

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

基本上,编译时错误意味着无法生成编写的代码,因为存在语法错误、键入错误、调用或以错误方式使用变量类型等,并且编译器无法继续。然而,现在的编译器尽最大努力识别所有类型的错误,甚至潜在的运行时错误,因为在编写代码时纠正这些问题比在调试过程中要便宜得多,花费的时间也要少。通常,在能够进行基本运行时分析的编译器中,您会收到警告,这是编译器告诉您它认为您的代码被提升的方式。它仍然构建在警告场景中,但警告始终是您应该注意的事项

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


底线是,任何时候我们都可以知道错误是在生成时而不是在完成后生成的,我们可以保持代码更干净、更有效。我希望这有帮助

在编译时这样做更快?