假设我有一个这样的函数 -
doSomeOperation = async () => {
try {
let result = await DoSomething.mightCauseException();
if (result.invalidState) {
throw new Error("Invalid State error");
}
return result;
} catch (error) {
ExceptionLogger.log(error);
throw new Error("Error performing operation");
}
};
这里的
DoSomething.mightCauseException
是一个可能会导致异常的异步调用,并且我正在使用 try..catch
来处理它。但是,使用获得的结果后,我可能会决定告诉调用者 doSomeOperation
操作已因某些原因失败。在上面的函数中,我抛出的
Error
被 catch
块捕获,然后只会向 doSomeOperation
的调用者抛出通用的 Error
。
doSomeOperation
的调用者可能会像这样做 -doSomeOperation()
.then((result) => console.log("Success"))
.catch((error) => console.log("Failed", error.message))
我的自定义错误从未到达这里。
这种模式可以在构建Express应用程序时使用。路由处理程序将调用某些函数,该函数可能希望以不同的方式失败,并让客户端知道它失败的原因。
我想知道如何做到这一点?还有其他模式可以遵循吗?谢谢!
mightCauseException
中抛出异常。这将传递到catch
块并在那里抛出。 - James Gould