자바스크립트 async 함수의 에러 핸들링

자바스크립트에서 async 함수는 비동기적인 작업을 처리하는 유용한 도구입니다. 하지만 이러한 async 함수를 사용하면서 발생할 수 있는 오류를 적절하게 핸들링하는 것은 매우 중요합니다. 이번 블로그 포스트에서는 자바스크립트 async 함수의 에러 핸들링에 대해 알아보겠습니다.

try-catch 문을 사용한 에러 핸들링

가장 기본적인 방법으로, try-catch 문을 사용하여 async 함수 내에서 발생한 오류를 처리할 수 있습니다. 다음은 간단한 예제입니다.

async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Error fetching data:', error);
    throw error;
  }
}

위 예제에서는 fetch 함수를 사용하여 데이터를 가져오고, await 키워드를 사용하여 비동기적으로 데이터를 받아옵니다. 만약 데이터를 가져오는 과정에서 오류가 발생하면, try 블록 내부에서 catch 블록으로 제어가 이동하게 됩니다. 오류를 콘솔에 출력하고, 오류를 다시 던져서 상위 호출자도 해당 오류를 알 수 있도록 하고 있습니다.

.catch() 메서드를 사용한 에러 핸들링

try-catch 문 대신에 async 함수에서 .catch() 메서드를 사용하여 에러를 처리할 수도 있습니다. 다음은 위 예제를 .catch() 메서드를 사용하여 변경한 예제입니다.

async function fetchData() {
  return fetch('https://api.example.com/data')
    .then(response => response.json())
    .catch(error => {
      console.error('Error fetching data:', error);
      throw error;
    });
}

위 예제에서는 fetch 함수의 반환값에 .catch() 메서드를 체인으로 연결하여 오류를 처리하고 있습니다. .catch() 메서드 내부에서 오류를 콘솔에 출력하고, 오류를 다시 던져서 상위 호출자도 해당 오류를 알 수 있도록 하고 있습니다.

try-catch.catch()의 차이점

try-catch 문과 .catch() 메서드는 둘 다 async 함수에서 에러를 핸들링하는 방법이지만, 차이점도 있습니다.

정리

자바스크립트 async 함수에서 발생하는 오류를 적절하게 핸들링하는 것은 중요합니다. try-catch 문을 사용하거나 .catch() 메서드를 이용하여 오류를 처리할 수 있으며, 상황에 맞게 선택하여 사용하는 것이 좋습니다. 적절한 에러 핸들링을 통해 비동기적인 작업을 안정적으로 처리할 수 있습니다.