[typescript] Promise 체인 내에서 예외가 발생하면 어떻게 처리되나요?
일반적으로 Promise 체인 내에서 예외가 발생하면 해당 예외는 현재 처리 중인 Promise를 reject하게 됩니다. 이후의 .then()
또는 .catch()
블록 중 하나에서 이 reject된 상태의 Promise를 처리할 수 있습니다.
function asyncAction(): Promise<string> {
return new Promise<string>((resolve, reject) => {
// 비동기 작업 수행
if (/* 예외 조건 */) {
reject(new Error("예외 발생!"));
} else {
resolve("성공적으로 완료됨");
}
});
}
asyncAction()
.then((result) => {
// 성공적으로 처리된 경우
console.log(result);
})
.catch((error) => {
// 예외가 발생한 경우
console.error(error.message);
});
위 코드에서 asyncAction()
이나 .then()
블록에서 예외가 발생하면 .catch()
블록에서 이를 처리할 수 있습니다.
또한, 예외를 처리하지 않고 넘겨받은 상태 그대로 다음 .catch()
블록으로 전파할 수도 있습니다. 이러한 방식으로 예외를 체인 상에서 여러 단계에 걸쳐 처리할 수 있습니다.