【发布时间】:2012-06-19 05:39:57
【问题描述】:
查看Twisted's Deferred class 和HeavyLifters Deferred Library 后,我注意到如果先前的结果值是Failure 类的实例,则会触发errbacks。这让我开始思考:是否有任何特殊原因需要返回一个特殊对象来表示错误,而不是仅仅抛出一个错误。
根据我的推断,我觉得最好抛出错误,因为:
- 可以抛出任何值。
- 如果抛出的值没有被捕获,它会向上传播调用堆栈。
- 不需要特殊的
Failure或Error类。 - 它使回调看起来更像同步代码。
- 可以在调用堆栈的任何级别处理异常。
我注意到的一些缺点是:
- 尝试代码块并捕获错误可能会影响代码的性能。
- 如果未捕获到异常,则会停止执行回调链的其余部分。
- 与使用 try catch 块相反,异步编程必不可少。
我正在权衡可能性并找出哪种报告错误的方法更适合这种情况。
【问题讨论】:
标签: javascript error-handling try-catch twisted deferred