提问人:MfyDev 提问时间:7/31/2023 最后编辑:MfyDev 更新时间:7/31/2023 访问量:77
断开 try/catch 语句时出错
Error breaking out of a try/catch statement
问:
当我对 NPM 包进行编程时,我需要一个语句,但错误有时会从部分中断并终止整个过程。try{}catch{}
try{}
由于用于从部分捕获错误并使用部分处理它们,我预计错误将被捕获并传递给 ,但是当函数使用 、not 语句返回错误时,错误就会爆发。我尝试了不同的调用方法,例如 或 ,但问题仍然存在。try{}catch{}
try{}
catch{}
catch{}
return
throw
.call(...)
.apply(...)
这通过:
let result;
let throwError = () => throw new Error("I didn't break out!");
try {
let res = throwError();
result = res;
} catch(err) {
result = {
message: err.message,
name: err.name
}
}
result; // {name: "Error", message: "I didn't break out!"}
这失败了:
let result;
let returnError = () => new Error("I broke out!")
try {
let res = returnError(); // Error: I broke out!
result = res;
} catch(err) {
result = {
message: err.message,
name: err.name
}
}
答:
0赞
Matthew Herbst
7/31/2023
#1
这里没有问题。如果你想抓住一个被抛出的错误,会这样做。如果要捕获返回的错误,则需要进行不同的检查。try/catch
let result;
let returnError = () => new Error("I broke out!")
try {
let res = returnError();
if (res instanceof Error) {
throw res;
}
result = res;
} catch(err) {
result = {
message: err.message,
name: err.name
}
}
评论
0赞
Matthew Herbst
7/31/2023
虽然在上面的代码中,由于您控制了 ,因此根本不需要 ,因为该函数永远不会抛出。只需使用returnError
try/catch
if/else
0赞
MfyDev
7/31/2023
在我的实际应用程序代码中,我无法控制.它由用户提供。returnError
0赞
Matthew Herbst
7/31/2023
那么我上面的例子正是你想要的:)
评论
throwError()
returnError()
returnError
throwError
try{}catch{}