为什么在编译时而不是在运行时发现错误更好?我在这里和其他地方搜索了相同的主题,但没有找到合适的答案。为什么在编译时而不是在运行时发现错误更好?
回答
这是一般事实,在软件开发过程的早期,你发现漏洞更快/更容易/更便宜的它是解决这些问题。通常情况下,编译器错误或警告指出您在问题所在的代码中的确切位置,而在运行时定位错误通常会是一个更加冗长和费力的过程。此外,也可能是该错误在一段时间内没有出现(“潜在”错误),因此您可能需要在未来某个时间花费额外的努力来提供客户支持,运送软件更新错误修复,应对造成名誉损失等
基本上,因为编译器每次编译时间的推移,通过所有的代码,它可以检测到任何错误会自动在每个汇编找到。
发现错误运行时意味着你必须运行所有的代码来检测错误,这可能会非常棘手,尤其是有很多条件执行分支的代码。另外,指出错误的确切位置可能非常棘手。
在它归结为尽快找到错误结束,这样你就可以解决这些问题,而该代码是在你的头脑清新。
此外,添加到什么@保罗r表示,编译错误是“容易”的通知(你刚才编译代码就万事大吉了),而运行时错误可能是特定的使用情况,这可能会崩溃您的系统在部署时。想想冲击...
有两种类型的错误,编译时间和运行时间。最好是,你希望你的错误发生在编译时,因为这些更容易诊断和纠正。
基本上编译时错误意味着编写的代码不能建立,因为有语法错误(打字错误)或类型错误(调用或使用错误的方式使用变量类型)等,编译器无法继续。尽管现在编译器尽最大努力来识别所有类型的错误,甚至是潜在的运行时错误,因为在编写代码时,与在调试过程中相反,它更便宜并且更少时间来纠正这些问题。通常情况下,在一个可以进行基本“运行时”分析的编译器中,您将收到警告,这是编译器告诉您它认为您的代码已被抬起的方式。它仍然建立在警告场景中,但警告总是您应该付费的东西。
发生运行时错误是因为尽管代码可能是正确的,但逻辑不是或编译器无法在编译过程中知道进入代码的参数(认为用户输入)。运行时错误的例子有无限循环,超出界限的错误,类型错误(当用户输入一个字符串时,要求输入一个数字)以及其他许多错误。
底线是,只要我们能够在产生错误时知道错误,而不是在完成之后,我们就可以让代码更加清晰和高效。我希望这有帮助。 :)
- 1. 为什么发生运行时错误而不是编译错误?
- 2. SBT - 为什么运行时出现编译错误?
- 3. 使用[]运算符时为什么会出现编译错误?
- 4. 为什么发生运行时错误?
- 5. 为什么在使用printf时会出现运行时错误?
- 6. 为什么在编译Typescript时出现“Can not find module”错误?
- 7. 为什么我在编译时出现以下错误:
- 8. 为什么在编译Ruby 1.8.7中的IronRuby时出现错误?
- 9. 为什么在用RXTX编译J2ME代码时出现错误?
- 10. 运行时错误和编译器错误有什么区别?
- 11. 运行时异常没有编译错误。为什么?
- 12. 添加引用时没有编译错误,但在编译时发现错误
- 13. 我应该在编译时而不是运行时建立继承吗?如果是的话,为什么?在Perl
- 14. 为什么不@NotNull引发编译时错误?
- 15. 当我从命令行编译时,为什么会出现子集错误,但不是从IDE进行编译?
- 16. 编译时间和运行时错误
- 17. 为什么在运行rsync时出现此错误?
- 18. 为什么在通过eclipse运行Selenium Grid时出现错误?
- 19. 注解在编译时出现,但在运行时不存在
- 20. 在java中,我想生成一个编译时错误,而不是运行时错误
- 21. Xcode 4.3.1运行Profiler时出现错误编译错误
- 22. 为什么在调用string.Select在C#时遇到编译错误?
- 23. 为什么aplay在pulseaudio运行时工作,而不是?
- 24. instanceof运算符 - 为什么有非法编译时错误
- 25. 为什么在执行GenServer时更好地跟踪#Reference而不是#PID?
- 26. 在.NET中,为什么常量是在编译时而不是在JIT时间进行评估的?
- 27. GWT编译器:什么时候编译错误是致命的?
- 28. 如果vtable是在编译时创建的,为什么这个错误是链接器错误而不是编译错误?
- 29. 编辑时发生代码错误,但编译时很好
- 30. 为什么运行时错误! SIGFPE?
这是更快在编译的时候做呢? – Tejs 2012-04-23 20:55:56