에러 처리 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) 방향으로 전파된다.