2017-06-26 20 views
0

我有一些代碼試圖做某事。有時候這種失敗的原因並不是我認爲失敗的原因。但我仍然想抓住真正的錯誤。我該如何忽略某些錯誤? eslint no-ex-assign的投訴

此代碼的工作完美,但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!`) 
    } 
} 

我知道到空分配犯錯是破壞性的:這就是爲什麼我這樣做,因爲我不認爲這是一個有效的錯誤,並無所求更多與它有關

有沒有更好的辦法,這應該處理?很明顯,我可以添加一個條件的投擲塊,但這似乎並不明確。

例如,我可以早點跳出趕時鐘嗎?

回答

3

爲什麼你不認爲,添加一個條件的投擲塊是明確的?我個人認爲這更可讀:

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

@mikemaccana是的,你可以使用'return',但只有當你在函數中。 – str

+1

@mikemaccana如果你不在'catch'裏面'拋出'或'return',解釋器將退出'catch'並繼續執行try-catch塊之後的任何代碼行 –

+0

@mikemaccana我知道你想忽略錯誤。您可以在[IIFE](https://stackoverflow.com/questions/6340874/a-javascript-function)中返回,或使用我在我的答案中描述的條件。 – str