如何忽略某些错误? eslint no-ex-assign抱怨

时间:2017-06-26 11:03:50

标签: javascript error-handling try-catch eslint

我有一些尝试做某事的代码。有时因为我没有考虑到失败的特定原因而失败。但我仍然希望捕捉到真正的错误。

此代码完美无缺,但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块中添加一个条件,但这看起来并不明确。

例如,我可以提早跳出捕获时钟吗?

1 个答案:

答案 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!`)
    }
}