Skip to content
← Back to rules

promise/catch-or-return 制限

何を行うか

プロミスに then() が適用されるたびに、catch() も適用されるようにします。関数から返されたプロミスの場合は例外とされます。

なぜ問題なのか

プロミス内のエラーをキャッチしないと、デバッグが困難な問題やエラーハンドリングの漏れが生じる可能性があります。最悪の場合、未処理のプロミスの拒否によりアプリケーションがクラッシュする可能性があります。

このルールに対して 誤り なコードの例:

javascript
myPromise.then(doSomething);
myPromise.then(doSomething, catchErrors); // catch() の使用は多少改善される

このルールに対して 正しい コードの例:

javascript
myPromise.then(doSomething).catch(errors);
function doSomethingElse() {
  return myPromise.then(doSomething);
}
const arrowFunc = () => myPromise.then(doSomething);

設定

このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます。

allowFinally

type: boolean

default: false

finally() を終了メソッドとして許可するかどうか。

allowThen

type: boolean

default: false

2つの引数を持つ then() を終了メソッドとして許可するかどうか。

terminationMethod

type: string[]

default: ["catch"]

許可される終了メソッドのリスト(例:catchdone)。

使い方

このルールを設定ファイルまたは CLI で 有効化 するには、次のようにします:

json
{
  "plugins": ["promise"],
  "rules": {
    "promise/catch-or-return": "error"
  }
}
bash
oxlint --deny promise/catch-or-return --promise-plugin

参照