【问题标题】:Why don't JavaScript libraries use error handling为什么 JavaScript 库不使用错误处理
【发布时间】:2012-07-15 16:15:53
【问题描述】:

我浏览了 underscore.js 和 backscore.js 这两个非常流行的库,并注意到它们不使用错误处理(try、catch、exception)。

做出这个决定的原因是什么?

【问题讨论】:

  • 因为你有像 internet explorer 这样的浏览器:p 你会遇到你最好的 try catch 甚至不起作用的情况。当 IE 想要崩溃时,它就会崩溃。
  • 您能否提供一个您认为可以通过内部捕获异常来改进的下划线或主干函数示例?
  • @FrédéricHamidi 下划线还是主干功能?这是什么术语?
  • @Christian,和function from the underscore.js or backbone.js libraries一样,只是更轻。
  • 或者至少,他们不使用它很多 - 对当前来源的快速计数表明他们每个人都会在少数几个地方抛出错误。

标签: javascript backbone.js error-handling underscore.js


【解决方案1】:

实际上,当您编写高质量的 javascript 代码时,您实际上并不需要 try/catch。通过 if 条件和错误处理程序处理异常逻辑,而不是在运行时捕获异常。

【讨论】:

  • 所以错误处理主要是针对错误代码或开发人员知道有问题的情况?好的代码不会为“错误行为”留出空间并使用外部测试库(如 node 中的 expresso 或 mocha)?
  • jQuery/Sizzle 使用try/catch 作为默认querySelectorAll 的一种方式。 NodeJS 有时也会使用它。
  • 我不确定这是否属于一些额外的问题,但函数参数映射是什么。这不是很多问题的根源吗?
  • @DarinDimitrov 现在有点乐观了!是什么让您认为像 jQuery 这样的 javascript 库写得很好(优质的 javascript 代码 - 用您自己的话来说)?
【解决方案2】:

快速浏览一下这些库确实揭示了throwcatch 的多种用途,因此它们确实使用了异常,尽管很少使用。

当额外的参数可能使函数变得繁琐和不可读和/或运行代码的“正常”先决条件被严重破坏超出可预测的错误情况时,异常非常有用。

使用术语“错误处理”似乎有点令人困惑,好像您避免异常但从函数传回错误值,这仍然是错误处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多