JavaScript Exception

자바스크립트에서 예외 처리는 코드 실행 중 발생할 수 있는 오류를 관리하고, 애플리케이션이 비정상적으로 종료되지 않도록 하는 중요한 기법입니다. 예외 처리는 try, catch, finally 블록을 사용하여 구현됩니다.

기본 구조

  1. try 블록: 실행할 코드를 포함합니다. 이 블록에서 예외가 발생하면 그 즉시 실행이 중단되고, 제어가 catch 블록으로 이동합니다.
  2. catch 블록: 예외가 발생했을 때 실행할 코드를 포함합니다. catch 블록은 try 블록에서 발생한 예외 객체를 매개변수로 받습니다.
  3. finally 블록: 예외 발생 여부와 상관없이 항상 실행되는 코드를 포함합니다. finally 블록은 선택적으로 사용할 수 있습니다.
try {
    // 실행할 코드
} catch (error) {
    // 예외가 발생했을 때 처리할 코드
} finally {
    // 항상 실행되는 코드
}

예제

try {
    let result = riskyOperation(); // 예외가 발생할 수 있는 함수 호출
    console.log('Operation successful:', result);
} catch (error) {
    console.error('An error occurred:', error.message);
} finally {
    console.log('Operation complete.');
}

주요 개념

예외 발생시키기 (throw)

예외를 명시적으로 발생시키려면 throw 문을 사용합니다. throw 문 뒤에는 예외 객체나 값을 지정할 수 있습니다. 예외 객체는 일반적으로 Error 객체를 사용합니다.

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

try {
    let result = divide(10, 0);
    console.log(result);
} catch (error) {
    console.error('An error occurred:', error.message);
}

사용자 정의 예외

필요에 따라 사용자 정의 예외를 만들 수도 있습니다. 이를 위해 Error 클래스를 확장합니다.

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.message);
}

네스티드 예외 처리

중첩된 예외 처리 블록을 사용하여 더 세밀하게 예외를 처리할 수 있습니다.

try {
    try {
        riskyOperation();
    } catch (error) {
        console.error('Inner catch:', error.message);
        throw new Error('New error in inner catch');
    }
} catch (error) {
    console.error('Outer catch:', error.message);
}

예외 객체

예외 객체는 발생한 오류에 대한 정보를 포함합니다. Error 객체의 주요 속성은 다음과 같습니다.

  • name: 오류의 이름 (기본값은 Error)
  • message: 오류 메시지
  • stack: 스택 추적 정보 (디버깅에 유용)
try {
    throw new Error('Something went wrong');
} catch (error) {
    console.log(error.name);    // "Error"
    console.log(error.message); // "Something went wrong"
    console.log(error.stack);   // 스택 추적 정보
}

결론

자바스크립트에서 예외 처리는 오류가 발생해도 프로그램이 비정상적으로 종료되지 않도록 하며, 오류를 우아하게 처리할 수 있게 해줍니다. try, catch, finally 블록을 사용하여 예외를 처리하고, throw 문을 사용하여 예외를 발생시킬 수 있습니다. 사용자 정의 예외와 네스티드 예외 처리는 더 정교한 오류 처리를 가능하게 합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *