我怎样才能忽略某些错误? eslint no-ex-assign 抱怨

How can I ignore certain Errors? eslint no-ex-assign complains

我有一些代码试图做一些事情。有时由于特定原因而失败,我认为这不是失败。但我仍然想捕捉真正的错误。

此代码完美运行,但是 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!`)
    }
}

我知道将 err 分配给 null 是破坏性的:这就是我这样做的原因,因为我不认为这是一个有效的错误并且不想再与它有任何关系 .

是否有更好的处理方法? 显然我可以向 throw 块添加一个条件,但这似乎并不明确。

例如,我可以提前跳出抓钟吗?

你为什么不认为,向 throw 块添加条件是显式的?就个人而言,我认为这更具可读性:

try {
    doThing()
} catch (err) {
    const canExceptionBeIgnored = err.message.includes('already exists'); 
    if (!canExceptionBeIgnored) {
        throw new Error(`Oh no something really bad happened!`)
    }
}