[typescript] 타입스크립트에서 프로미스 체이닝을 사용할 때 에러 핸들링은 왜 중요한가요?

프로미스 체이닝에서 각각의 프로미스가 이전 프로미스에서 발생한 에러를 잡아 처리하지 않으면, 전체 체인이 중단될 수 있습니다. 에러 핸들링은 이를 방지하여 체이닝된 작업 중 하나라도 실패해도 전체 작업 흐름이 계속되도록 합니다.

다음은 타입스크립트에서 프로미스 체이닝과 에러 핸들링을 함께 적용하는 간단한 예시입니다.

function fetchUser(): Promise<User> {
  return fetch('/user').then(response => {
    if (!response.ok) {
      throw new Error('Failed to fetch user');
    }
    return response.json();
  });
}

function fetchUserDetails(userId: number): Promise<UserDetails> {
  return fetch(`/user/${userId}`).then(response => {
    if (!response.ok) {
      throw new Error('Failed to fetch user details');
    }
    return response.json();
  });
}

fetchUser()
  .then(user => fetchUserDetails(user.id))
  .then(userDetails => {
    // Use user details
  })
  .catch(error => {
    // Handle any errors from the entire promise chain
    console.error(error);
  });

이 예시에서는 fetchUserfetchUserDetails 함수가 프로미스를 반환하며, 각각의 프로미스에서 HTTP 요청이 실패할 경우 에러가 발생합니다. 마지막에 위치한 catch 블록은 전체 체이닝된 프로미스에서 발생한 에러를 처리합니다.

에러 핸들링은 안정적인 코드를 작성하고 사용자 경험을 향상시키는 데 필수적입니다.

참고 자료: