← 목록

Node.js에서의 에러 핸들링과 디버깅 🐞

작성: 2024년 06월 14일읽기: 약 3분

Node.js에서 코드를 작성하다 보면 예상치 못한 에러가 발생할 때가 있습니다. 이러한 에러들을 효과적으로 다루는 방법을 알아보겠습니다. 이 글은 주니어 개발자들을 위해 복잡한 용어를 최소화하면서 설명합니다.

에러 핸들링이란?

에러 핸들링은 프로그램에서 예상치 못한 문제가 발생했을 때, 이를 적절히 처리하는 방법입니다. Node.js에서는 주로 try...catch 구문과 Promise.catch() 메서드를 사용하여 에러를 처리합니다.

try...catch 사용하기

try...catch 구문을 사용하면 에러가 발생할 수 있는 코드를 try 블록 안에 넣고, 만약 에러가 발생하면 catch 블록이 실행되어 에러를 처리합니다.

try {
  // 에러가 발생할 수 있는 코드
  const result = riskyOperation();
  console.log(result);
} catch (error) {
  // 에러 처리
  console.error("에러가 발생했습니다:", error);
}

Promise와 .catch() 메서드

비동기 작업을 처리할 때는 Promise를 사용하는 경우가 많습니다. Promise에서 발생한 에러는 .catch() 메서드를 사용하여 처리할 수 있습니다.

doSomethingAsync()
  .then(result => {
    console.log("성공:", result);
  })
  .catch(error => {
    console.error("에러 발생:", error);
  });

비동기 함수에서의 에러 핸들링

비동기 함수인 async/await를 사용할 때는 try...catch 구문을 사용하여 에러를 처리할 수 있습니다.

async function fetchData() {
  try {
    const data = await fetchSomeData();
    console.log("데이터:", data);
  } catch (error) {
    console.error("데이터를 가져오는 중 에러 발생:", error);
  }
}

에러 로깅

에러를 처리할 때, 단순히 콘솔에 에러를 출력하는 것 외에도, 에러 로깅을 통해 에러 정보를 파일이나 데이터베이스에 저장할 수 있습니다. 이는 나중에 에러를 분석하고 문제를 해결하는 데 도움이 됩니다.

const fs = require('fs');

try {
  // 에러가 발생할 수 있는 코드
} catch (error) {
  // 에러 로깅
  fs.writeFile('errorLog.txt', error.stack, (err) => {
    if (err) console.error("로그 기록 실패:", err);
    else console.log("에러 로그가 기록되었습니다.");
  });
}

에러 핸들링은 개발 과정에서 매우 중요한 부분입니다. 위에서 소개한 방법들을 통해 Node.js 애플리케이션에서 발생할 수 있는 에러를 효과적으로 다룰 수 있습니다. 에러 핸들링을 잘 이해하고 적용하면, 더 안정적이고 신뢰할 수 있는 애플리케이션을 개발할 수 있습니다.