gpt4 book ai didi

javascript - Try-catch-rethrow - 正确的模式

转载 作者:行者123 更新时间:2023-12-05 07:37:41 37 4
gpt4 key购买 nike

如果我有这样的代码:

let result;
try {
result = doSomethingThatCanThrow();
} catch (e) {
throw new Error(`Thrown error because <some info> ${e}`)
}

// do something with result if didn't throw

这是 JS 中的有效模式吗?我不喜欢使用 let。我更喜欢 const 但我不能在这种情况下使用它,因为它在 try-catch block 之外不可用。

我可以将整个代码放在 try block 中并摆脱 let 但在我看来这样会更难阅读:

try {
const result = doSomethingThatCanThrow();
// do something with result if didn't throw
} catch (e) {
throw new Error(`Thrown error because <some info> ${e}`)
}

记住它总是可以增长的。

此外,我总是可以跳过重新抛出,但我想向错误添加更多信息。

哪个选项更好,为什么?还有其他可能吗?

最佳答案

你可以使用finally

(async(doSomethingThatCanThrow) => {

let result;
try {
result = await doSomethingThatCanThrow();
} catch (e) {
throw new Error(`Thrown error because <some info> ${e}`)
} finally {
if (result !== undefined) {
// do something with result if didn't throw
console.log(result);
} else {
console.log(result);
}
}
// do stuff
})(() => Promise.reject(123))
.catch(err => console.error(err));

关于javascript - Try-catch-rethrow - 正确的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48428601/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com