본문 바로가기
JavaScript 문법 시리즈

[JavaScript 문법] 29일차: 에러 처리

by cogito21_js 2024. 8. 29.
반응형

에러 처리란?

에러 처리는 코드 실행 중 발생할 수 있는 예외 상황을 관리하고, 프로그램이 예기치 않게 종료되지 않도록 하는 중요한 방법입니다. JavaScript에서는 try, catch, finally, throw 문을 사용하여 에러를 처리할 수 있습니다.

try, catch 문

try 블록은 코드 실행을 시도하며, catch 블록은 try 블록에서 발생한 에러를 처리합니다.

 

기본 문법

try {
  // 코드 실행
} catch (error) {
  // 에러 처리
}

예제

try {
  let result = 10 / 0;
  console.log(result); // Infinity
  let json = JSON.parse('Invalid JSON');
} catch (error) {
  console.error('Error caught:', error.message);
}

finally 문

finally 블록은 try 또는 catch 블록 이후에 항상 실행됩니다. 이를 통해 에러 발생 여부와 상관없이 반드시 실행되어야 하는 코드를 작성할 수 있습니다.

 

기본 문법

try {
  // 코드 실행
} catch (error) {
  // 에러 처리
} finally {
  // 항상 실행
}

예제

try {
  let result = 10 / 2;
  console.log(result); // 5
  let json = JSON.parse('Invalid JSON');
} catch (error) {
  console.error('Error caught:', error.message);
} finally {
  console.log('This will always run');
}

throw 문

throw 문을 사용하여 사용자 정의 에러를 발생시킬 수 있습니다. 이는 특정 조건에서 의도적으로 에러를 발생시키고 싶을 때 유용합니다.

 

기본 문법

throw new Error('에러 메시지');

예제

function divide(a, b) {
  if (b === 0) {
    throw new Error('Division by zero');
  }
  return a / b;
}

try {
  console.log(divide(10, 2)); // 5
  console.log(divide(10, 0)); // Error 발생
} catch (error) {
  console.error('Error caught:', error.message);
}

에러 객체

에러 객체는 발생한 에러에 대한 정보를 포함합니다. 주요 속성은 다음과 같습니다:

  • message: 에러 메시지
  • name: 에러 이름
  • stack: 스택 트레이스 (디버깅에 유용)

예제

try {
  let json = JSON.parse('Invalid JSON');
} catch (error) {
  console.error('Error name:', error.name);
  console.error('Error message:', error.message);
  console.error('Error stack:', error.stack);
}

커스텀 에러

커스텀 에러 클래스를 정의하여 고유한 에러를 생성할 수 있습니다.

예제

class CustomError extends Error {
  constructor(message) {
    super(message);
    this.name = 'CustomError';
  }
}

try {
  throw new CustomError('This is a custom error');
} catch (error) {
  console.error('Error name:', error.name);
  console.error('Error message:', error.message);
}

에러 처리의 모범 사례

  1. 명확한 에러 메시지: 에러 메시지는 가능한 한 명확하고 구체적이어야 합니다.
  2. 로그 기록: 에러를 콘솔이나 파일에 기록하여 디버깅과 유지보수에 도움이 되도록 합니다.
  3. 사용자에게 알림: 사용자에게 에러 발생 사실을 알리고, 적절한 대안을 제시합니다.
  4. 일관된 에러 처리: 애플리케이션 전체에서 일관된 방식으로 에러를 처리합니다.
  5. 자원 정리: finally 블록을 사용하여 항상 실행되어야 하는 코드를 작성하고, 자원을 정리합니다.

결론

에러 처리는 JavaScript 애플리케이션의 안정성과 유지보수성을 높이는 중요한 방법입니다. 이번 글에서는 try, catch, finally, throw 문을 사용한 에러 처리 방법과 에러 객체, 커스텀 에러, 에러 처리의 모범 사례에 대해 배웠습니다. 다음 글에서는 정규 표현식에 대해 알아보겠습니다.

다음 글에서 만나요!

 

반응형