에러(Error)와 예외(Exception)

예외처리(Exception Handling)이란?

JavaScript의 Error 클래스 상속 관계

Error
├── EvalError
├── RangeError
├── ReferenceError
├── SyntaxError
├── TypeError
└── URIError

try, catch, finally

try {
    console.log("코드 실행");
    // 예외가 발생할 수 있는 코드
    let result = 10 / 0;  // NaN 발생 (Division by zero는 오류가 아님)
    console.log(result);
} catch (e) {
    // 예외 발생 시 처리
    console.log("예외 발생: " + e.message);
} finally {
    // 예외 발생 여부와 관계없이 마지막에 실행
    console.log("코드 실행 완료");
}

강제 예외 발생

try {
    // 강제 예외 발생
    throw new Error('강제 예외 발생');
} catch (e) {
    console.log('Error: ' + e.message);
}

예외를 세세하게 처리하기

try {
    // 강제 예외 발생
    throw new TypeError('강제 예외 발생');
} catch (e) {
    if (e instanceof SyntaxError) {
        console.log('Syntax Error: ' + e.message);
    } else if (e instanceof TypeError) {
        console.log('Type Error: ' + e.message);
    } else {
        console.log('기타 오류: ' + e.message);
    }
}