【发布时间】:2011-09-22 23:51:41
【问题描述】:
我希望开始让我的 JavaScript 更加防错,并且我找到了大量关于使用 try、catch、finally 和 throw 的文档,但我没有从专家那里获得大量关于何时何地抛出错误的建议。
- 是否应该将每段代码都包装在 try/catch 中?
- 是否有更多类似this on 的建议应该在什么时候发现错误?
- 引发错误而不是让代码在生产中静默失败有什么缺点吗?
- 就实现而言,SO 已经谈到了这一点,但是服务器记录 JS 错误是否是一种有效的策略?
- 关于在我的应用程序中捕获错误,我还应该知道什么?
我也完全喜欢听那些有精彩章节或深入解释错误处理的书籍。 Eloquent JavaScript 涉及此事,但对这个问题不是很规范或固执己见。
感谢您提供的任何建议!
【问题讨论】:
-
这肯定取决于出现问题时失败的严重程度以及可能出现的错误消息的数量。您不想因为错误日志目录已满而失败吗? - 你看过这里吗? stackoverflow.com/search?q=error+logging+javascript
-
@mplungjan - 我确实浏览了那里的答案,但似乎没有很多规范,并且搜索 Javascript 错误处理/异常最佳实践没有任何结果,所以我认为尝试和征求一些浓缩的想法,以供我自己的理解和未来的搜索者使用。也许这是一个不可能规定最佳实践的话题,但每种情况都非常独特?
-
"是否应该将每段代码都包装在 try/catch 中?"当然不是。有很多你知道总是可以工作的代码(当然,假设你测试了它,但是 try/catch 的重点不是捕捉或掩盖编码错误)。仅包装由于超出其控制范围而可能在某些时候失败的代码,通常是资源访问等。注意:一些可能失败的事情具有内置的错误处理,例如,我不会费心从头开始编写 Ajax 时有很多库可以处理跨浏览器问题并让您指定错误处理函数。
-
这是一个很好的问题,乔希,+1。周围有很多语法建议,但就像你说的那样,这很容易。在这个问题的答案 (stackoverflow.com/questions/2825427/…) 中提到了这一点,其中解释了异常在 JS 中不常用,并给出了原因。