2011-12-31 30 views
4

在JavaScript中编写库时,处理函数无效输入的最标准(最友好的方法)是什么?我的直觉告诉我,返回undefined是完全正确的,但是实际上抛出一个错误更有用吗?或者它真的没关系?JS库最佳实践:返回未定义或抛出错误的函数输入错误?

我还可以看到返回false,null甚至-1,但我不认为这些会如预期般普遍。

(如果这个问题太主观了,我很高兴,使其CW)

+0

一个库应该使用注释来编码,这些注释清楚地定义了参数必须或可能是什么以及它们不能是什么,以及任何返回值的类型。 Friendliest是不用任何它不准备处理的参数调用一个函数。 – kennebec 2011-12-31 17:44:55

+0

所以这是对我来说,文件的功能和用户遵守其规则。这表明简单地返回undefined就足够了。但是因为我需要1分钟的时间才能抛出一个错误而不是无声地死去,那么对于那些没有花时间阅读文档的人来说,在调试时间里不会节省数小时?或者有些内在的负面因素太冗长,并且抛出太多错误。 – Thomas 2011-12-31 18:09:55

回答

1

例外的优点:

  • 如果错误是一种罕见的发生(不期望在正常运行),那么它可能是调用代码赶上一个更高层次的地方异常方便和快捷,而比在每次API调用后测试返回值。

例外的缺点:

  • 捕获异常比测试返回值,所以如果错误是经常发生的,那么异常就会慢很多慢了许多。
  • 如果调用代码要检查每个API调用时发生的错误(并且不会捕获更高级别的异常),那么与单纯测试返回值相比,针对每个API调用写入异常更加痛苦。
+0

谢谢。用户测试返回值的速度和易用性与为每个可能的无效输入抛出异常情况相比,对我来说很重要。 – Thomas 2011-12-31 20:44:25

+4

速度应该不重要:一个例外就是 - EXCEPTION,这意味着它很少发生。如果你已经期望它发生,不要使用“异常”(因为在这种情况下,它听起来更像是“规则”,这并不一定意味着它是最常见的事件)。异常处理意外,这是真的不应该发生的事情。处理正常程序流中的EXPECTED。只是一个意见(通过其他人)。 – 2012-06-26 07:36:02

4

我觉得undefined是好的,但要记住的是:

JavaScript没有void类型,所以每个函数都必须返回一个 值。缺省值是未定义的,除了构造函数,其中 的默认返回值是this。

所以你不需要明确地返回undefined。这将是默认情况下。

看到http://javascript.crockford.com/survey.html

0

也许明显 如果你伸出的环境 - 继续他们的实践作为最低

快速回答。 如果这是在浏览器中的JavaScript未定义是好的,如果它是在服务器中的JavaScript引发错误。

改进 让库用户选择行为作为选项,无论是全局库还是逐个对象基础。