我有一些尝试做某事的代码。有时因为我没有考虑到失败的特定原因而失败。但我仍然希望捕捉到真正的错误。
此代码完美无缺,但eslint complains:
try {
doThing()
} catch (err) {
if ( err.message.includes('already exists') ) {
err = null;
}
if ( err ) {
throw new Error(`Oh no something really bad happened!`)
}
}
我知道将错误分配给null是破坏性的:这就是为什么我这样做,因为我不认为这是一个有效的错误,并且不想再与它有任何关系。
有没有更好的方法来处理它?</ strong>显然我可以在throw块中添加一个条件,但这看起来并不明确。
例如,我可以提早跳出捕获时钟吗?
答案 0 :(得分:3)
为什么不这么认为,在throw块中添加一个条件是明确的?就个人而言,我认为这更具可读性:
try {
doThing()
} catch (err) {
const canExceptionBeIgnored = err.message.includes('already exists');
if (!canExceptionBeIgnored) {
throw new Error(`Oh no something really bad happened!`)
}
}