[typescript] 비동기 코드에서의 예외 처리 방법

비동기 코드에서 예외 처리는 중요한 주제입니다. TypeScript에서는 Promise, async/await, 그리고 try/catch 문을 사용하여 비동기 코드에서 예외를 처리할 수 있습니다. 이 포스트에서는 이러한 방법들을 자세히 살펴보겠습니다.

Promise를 사용한 예외 처리

Promise를 사용하면 비동기 작업의 성공 또는 실패를 처리할 수 있습니다. 예를 들어, fetchData 함수에서 데이터를 가져오는 중에 예외가 발생할 수 있습니다.

function fetchData(): Promise<string> {
  return new Promise((resolve, reject) => {
    // 비동기 작업 수행
    if (/* 성공 조건 */) {
      resolve('데이터');
    } else {
      reject(new Error('데이터를 가져오는 중에 오류가 발생했습니다.'));
    }
  });
}

fetchData()
  .then(data => {
    // 데이터 가져오기 성공
    console.log(data);
  })
  .catch(error => {
    // 데이터 가져오기 실패
    console.error(error);
  });

위의 예제에서, fetchData 함수가 Promise를 반환하고 있는데, 해당 Promise를 사용하여 thencatch를 이용하여 성공과 실패를 처리할 수 있습니다.

async/await를 사용한 예외 처리

async/await는 Promise를 더 쉽게 다룰 수 있도록 도와줍니다. 아래 예제에서는 fetchData 함수를 async 함수로 만들어 await 키워드를 사용하여 데이터를 가져오는 중에 발생한 예외를 처리합니다.

async function fetchData(): Promise<void> {
  try {
    const data = await fetch('https://example.com/data');
    console.log(data);
  } catch (error) {
    console.error('데이터를 가져오는 중에 오류가 발생했습니다.', error);
  }
}

fetchData();

try/catch를 이용한 예외 처리

마지막으로, 일반적인 동기 코드에서 사용되는 try/catch 문을 사용하여 Promise나 async 함수가 아닌 비동기 코드의 예외를 처리할 수 있습니다.

function fetchData(): void {
  try {
    // 비동기 작업 수행
    if (/* 성공 조건 */) {
      console.log('데이터');
    } else {
      throw new Error('데이터를 가져오는 중에 오류가 발생했습니다.');
    }
  } catch (error) {
    console.error(error);
  }
}

fetchData();

마치며

이 포스트에서는 TypeScript에서 비동기 코드에서의 예외 처리에 대해 알아보았습니다. Promise, async/await, 그리고 try/catch를 이용하여 비동기 코드의 예외를 처리할 수 있습니다. 올바른 예외 처리는 안정적인 애플리케이션을 개발하는 데 큰 도움이 될 것입니다.

참조: