[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() 블록으로 전파할 수도 있습니다. 이러한 방식으로 예외를 체인 상에서 여러 단계에 걸쳐 처리할 수 있습니다.