promise/prefer-catch スタイル
何を実行するか
then(a, b) および then(null, b) の代わりに catch を優先する。このルールでは、プロミスのエラー処理のために then 呼び出しの第二引数に引数を渡すことを禁止する。
なぜ悪いのか
then 呼び出しに二つの引数を使用すると、エラーハンドラーが存在することを認識しにくくなる。また、then 呼び出しの第二引数を使用する場合の別の問題として、プロミスのエラー処理の順序が明らかでなくなることがある。
たとえば、一見して prom.then(fn1, fn2) は prom.then(fn1).catch(fn2) と等価のように見えるかもしれない。しかし、これらは等価ではない。実際には prom.catch(fn2).then(fn1) が等価である。このような混乱は、then 呼び出しの第二引数に引数を渡すのではなく、明示的な catch 呼び出しを優先すべき理由となる。
例
このルールに対して不正なコード例:
js
prom.then(fn1, fn2);
prom.then(null, fn2);このルールに対して正しいコード例:
js
prom.catch(fn2).then(fn1);
prom.catch(fn2);使い方
設定ファイルまたは CLI でこのルールを有効化するには、以下のいずれかを使用できます。
json
{
"plugins": ["promise"],
"rules": {
"promise/prefer-catch": "error"
}
}bash
oxlint --deny promise/prefer-catch --promise-plugin