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

기본값: false

finally()를 종료 메서드로 허용할지 여부.

allowThen

type: boolean

기본값: false

두 인자를 사용한 then()을 종료 메서드로 허용할지 여부.

terminationMethod

type: string[]

기본값: ["catch"]

허용되는 종료 메서드 목록 (예: catch, done).

사용 방법

구성 파일 또는 명령줄에서 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

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

참고 자료