에러 처리 47

에러 처리의 필요성

발생한 에러를 방치하면 프로그램은 강제 종료된다.

console.log('start);
foo(); //ReferenceError: foo is not definded
console.log('end'); // 위 에러에 의해 강제 종료되어 이 코드는 실행되지 않는다.
console.log('start');
try{
    foo();
}catch(error){
    console.error('',error);
}
console.log('end'); //프로그램이 강제 종료되지 않아 이 코드는 실행된다.

try...catch...finally 문

try...catch...finally 문으로 에러를 처리하면 프로그램이 강제 종료되지 않는다.

try{
    // 실행할 코드(에러가 발생할 가능성이 있는 코드)
}catch(err){
    // try 코드 블록에서 에러가 발생하면 이 코드 블록의 코드가 실행된다.
    //err 에는 try 코드 블록에서 발생한 Error 객체가 전달된다.
}finally{
    // 에러 발생과 상관없이 반드시 한 번 실행된다.
}

Error 객체

const error = new Error('invalid');

throw 문

Error 생성자 함수로 에러 객체를 생성한다고 에러가 발생하는 것은 아니다.
에러를 발생시키려면 try 코드 블록에서 throw 문으로 에러 객체를 던져야 한다.

try{
    // new Error('something wrong'); // 에러 객체를 생성한다고 에러가 발생하는 것은 아니다.
    throw new Error('something wrong');
}catch(error){
    console.log(error);
}

에러의 전파

에러는 호출자(caller) 방향으로 전파된다.