はじめに
catch ブロックを空にしていたのが原因で、ESLint に「Empty block statement」エラーが出た。
問題
以下のようにlocalStorage.removeItem
を呼ぶ際、エラーを握りつぶしたい場合があります。
export function clearHistory() {
try {
localStorage.removeItem("KEY");
} catch {}
}
しかしこの書き方だと ESLint が次のエラーを出します。
Empty block statement. (no-empty)
「catch ブロックが空ですよ。せめて何か書いてください」という指摘らしいです。
解決方法
ざっと調べた限りで、解決方法は3つありました。
1. コメントを入れる
export function clearHistory() {
try {
localStorage.removeItem("aimai__runHistory");
} catch {
// ignore
}
}
// ignore
のように「なぜ空なのか」を示すコメントを書けば ESLint が許してくれます。
2. ログを出す
export function clearHistory() {
try {
localStorage.removeItem("aimai__runHistory");
} catch (e) {
console.warn("clearHistory failed:", e);
}
}
開発時に気づけるようにログを出す方法です。
3. ESLint ルールを無効化する
/* eslint-disable no-empty */
export function clearHistory() {
try {
localStorage.removeItem("aimai__runHistory");
} catch {}
}
これはあまり使わないかと思います。
参考
公式ドキュメントにちゃんと書かれてました。