【发布时间】:2019-06-08 18:00:23
【问题描述】:
function abc() {
try {
setTimeout(() => {
console.log('inside timeout!!');
throw new Error('Somehting went wrong!!');
}, 1000);
} catch (err) {
console.log('Gonna catch it here and throw is again', err);
throw new Error(err);
}
}
try {
abc();
} catch (err) {
console.log('err caught here', err);
}
如何捕捉错误?我应该在哪里用 try/catch 包装我的代码? 即使承诺为什么 catch 块没有捕获错误。
async function abc() {
setTimeout(() => {
throw new Error();
}, 1000);
}
try {
abc();
} catch (err) {
console.log('err is ', err);
}
【问题讨论】:
-
你必须把回调包裹起来,因为
setTimeout(() => {throw new Error();}, 1000);是一个成功的调用。错误直到稍后才会出现。 -
您应该拒绝承诺,以便执行 catch 函数。这个catch函数不同于
try catch构造来捕捉异常 -
@Xufox,这意味着无法捕获回调函数之外的任何回调函数的错误?
标签: javascript try-catch