1

我有这种模式的代码 - 我需要在 fn() 成功或 fn() 执行中出现异常时调用 next() 。

try {
    fn.call(obj, a, b, c, function(error, next) {
           ...
           next();
    });
} catch (ex) {
    // log. 
    next();  // This is under question.
}

异常不仅可以发生在 fn 中,还可以发生在 next() 中的任何地方。我不应该从 catch 中调用 next() ,因为如果异常来自执行 next 期间的某个地方,我不会这样做。

那么你们推荐这种模式的方法是什么?

4

1 回答 1

0

首先,我建议您看一下try...catch 块描述(不要介意它是针对浏览器 JS 的)。在您的情况下,是否可以将next()函数放在 finally 块中?是的,我建议把它放在那里,然后把整个try...catch街区放在另一个try...catch街区里。

在最终确定中仍然抛出异常不是一个好习惯。你确定你try...catch在正确的地方使用吗?也许最好在内部进行fn(或在函数内部处理 wxception error)?

于 2013-01-30T08:32:05.050 回答