Error Handling(한국어)

JavaScript에서의 오류 처리는 코드 실행 중 발생할 수 있는 런타임 오류와 예외를 처리하는 것을 포함합니다.

효과적으로 오류를 처리하기 위해 사용 가능한 여러 기술과 메커니즘이 있습니다.

아래 오류 처리 기술과 메커니즘을 적절하게 활용하면 JavaScript 코드를 더 견고하게 만들고 예외 상황에 대처할 수 있습니다.

Method

  1. try-catch: 코드 블록을 시도하고 예외가 발생하면 해당 예외를 캐치하고 예외 처리 코드 블록을 실행합니다. 이를 통해 예외가 코드 실행을 중단시키지 않고 오류를 처리할 수 있습니다.

  2. throw: 개발자가 직접 예외를 throw하여 예외를 일으킬 수 있습니다. 이는 특정 조건이나 오류 상황을 나타낼 때 사용됩니다.

  3. finally: try-catch 문과 함께 사용되며, 예외가 발생하든 발생하지 않든 항상 실행되는 코드 블록입니다. 주로 정리 작업이나 리소스 정리에 사용됩니다.

  4. Error 객체: JavaScript는 다양한 내장 오류 객체를 제공하며, 이러한 객체는 특정 유형의 오류를 나타냅니다. 예를 들어, SyntaxError, TypeError 등이 있습니다. 이러한 오류 객체는 예외의 세부 정보를 포함하고 있어 디버깅에 유용합니다.


try-catch

try 블록은 예외를 발생시킬 수 있는 코드를 포함하며, catch 블록은 예외를 처리할 수 있는 곳입니다.

예시에서, try 블록은 변수 x와 y를 나누는 연산을 수행하고, 만약 나눗셈 연산에서 예외가 발생하면 catch 블록이 해당 예외를 캐치하고 오류 메시지를 출력합니다. 이렇게 하면 코드 실행이 중단되지 않고 예외를 처리할 수 있습니다.

try-catch

try {
    // 예시: 예외를 발생시키는 코드
    const result = x / y; // x와 y를 나누는 연산에서 예외 발생 가능
} catch (error) {
    // 예시: 예외를 처리하는 코드
    console.error("오류가 발생했습니다: " + error.message);
}

throw

throw 문은 사용자가 직접 오류를 발생시키는 데 사용됩니다. 이를 통해 사용자 정의 오류를 생성하고 throw하여 예외를 일으킬 수 있으며, try-catch를 사용하여 이러한 오류를 캐치하고 처리할 수 있습니다.

divide 함수가 두 개의 숫자를 인수로 받고, 두 번째 숫자가 0인 경우 "0으로 나누는 것은 허용되지 않습니다."라는 사용자 정의 오류를 throw합니다. 그런 다음, try-catch 블록을 사용하여 이 오류를 캐치하고 오류 메시지를 출력합니다. 이렇게 하면 예외 상황을 감지하고 처리할 수 있습니다.

throw

function divide(a, b) {
    if (b === 0) {
        throw new Error("0으로 나누는 것은 허용되지 않습니다.");
    }
    return a / b;
}

try {
    let result = divide(10, 0);
    console.log(result);
} catch (error) {
    console.log("오류 발생:", error.message);
}

finally

finally 블록은 try-catch 블록 다음에 오는 선택적인 블록입니다. finally 블록 내의 코드는 예외가 발생했든 발생하지 않았든 항상 실행됩니다.

주로 정리 작업이나 리소스 해제와 같은 마무리 작업을 수행하는 데에 사용됩니다. (데이터베이스 연결 등의 작업에서도 유용하게 적용될 수 있습니다.)

finally

function divide(a, b) {
    try {
        if (b === 0) {
            throw new Error("0으로 나누는 것은 허용되지 않습니다.");
        }
        return a / b;
    } catch (error) {
        console.log("오류 발생:", error.message);
    } finally {
        console.log("마무리 작업을 수행합니다.");
    }
}

console.log(divide(10, 2)); // 정상적인 경우
console.log(divide(10, 0)); // 예외 발생한 경우

Error 객체

JavaScript는 다양한 유형의 오류를 나타내는 내장 오류 객체를 제공합니다. 이러한 객체들은 오류에 관한 다양한 정보를 제공하며 주요 내장 오류 객체로는 Error, TypeError, SyntaxError, ReferenceError, RangeError, EvalError, URIError 등이 있습니다. 이러한 오류 객체들은 예외 처리 및 디버깅을 돕는 데 유용합니다.

  • Name
    TypeError
    Type
    Description

    예상되는 자료형과 다른 자료형을 사용했을 때 발생하는 오류

  • Name
    SyntaxError
    Type
    Description

    코드에 구문 오류가 있을 때 발생하는 오류. 유효하지 않은 코드 작성 시 발생

  • Name
    ReferenceError
    Type
    Description

    유효하지 않은 참조 시 발생. 선언되지 않은 변수나 존재하지 않는 객체에 접근 시 발생

  • Name
    RangeError
    Type
    Description

    숫자 값이 허용 범위를 벗어날 때 발생. 예를 들어, 배열의 길이에 관련된 오류

  • Name
    EvalError
    Type
    Description

    eval() 함수 실행 중 오류가 발생할 때 발생하는 오류

  • Name
    URIError
    Type
    Description

    잘못된 URI 작업 시 발생하는 오류