반응형
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);
}
}
반응형