Promise 거부는 'try' 블록에 의해 포착되어서는 안 됩니다.

반응형

Promise에서 발생한 예외(거부 포함)는 비동기 실행 특성으로 인해 중첩 try 블록에서 포착되지 않습니다. 대신 Promise의 catch 메소드를 사용하거나 이를 Wait 표현식 안에 래핑하십시오.

이 규칙은 Promise를 반환하는 함수에 대한 호출 외에는 아무것도 포함하지 않는 try-catch 문을 보고합니다(따라서 catch가 Promise 거부 이외의 다른 것을 포착할 가능성이 적습니다).

나쁜 예:

function runPromise() {
  return Promise.reject("rejection reason");
}

function foo() {
  try { // Noncompliant, the catch clause of the 'try' will not be executed for the code inside promise
    runPromise();
  } catch (e) {
    console.log("Failed to run promise", e);
  }
}

좋은 예:

function foo() {
  runPromise().catch(e => console.log("Failed to run promise", e));
}

// or
async function foo() {
  try {
    await runPromise();
  } catch (e) {
    console.log("Failed to run promise", e);
  }
}
반응형