47. 에러 처리
47.1 에러 처리의 필요성
- 에러가 발생하지 않는 코드를 작성하는 것은 불가능함. 언제나 에러나 예외적인 상황이 발생할 수 있다는 것을 전제하고 이에 대응하는 코드를 작성하는 것이 중요함
47.2 try...catch...finally문
- 에러를 처리하는 방법 : 예외적인 상황이 발생하면 반환하는 값을 if문이나 단축평가, 옵셔널 체이닝 연산자를 통해 확인해서 처리하는 방법 / 에러 처리 코드를 미리 등록해두고 에러가 발생하면 에러 처리 코드로 점프하도록 하는 방법
try {
// 실행할 코드 (에러가 발생할 가능성이 있는 코드)
} catch (err) {
// try코드 블록에서 에러가 발생하면 이 코드 블록의 코드가 실행됨
// err에는 try코드 블록에서 발생한 Error객체가 전달됨
} finally {
// 에러 발생과 상관 없이 반드시 한번 실행됨
}
47.3 Error객체
- Error생성자 함수는 에러 객체를 생성하고, 함수에는 에러 메시지를 인수로 전달할 수 있음
const error = new Error('invalid');
- 에러 객체는 message프로퍼티와 stack프로퍼티를 가짐
47.4 throw문
- Error생성자 함수로 에러 객체를 생성한다고 에러가 발생하는 것이 아니기 때문에, 에러를 발생시키려면 try코드 블록에서 throw문으로 에러 객체를 던져야 함
try {
throw new Error('something wrong');
} catch (err) {
console.log(error);
}
47.5 에러의 전파
- 에러는 호출자 방향으로 전파됨