47.1 에러 처리의 필요성
발생한 에러에 대한 대처가 없는 경우, 프로그램이 강제 종료된다.
⇒ try - catch 문을 사용해 발생한 에러에 적절하게 대응하면 프로그램이 강제 종료되지 않고 계속해서 코드를 실행시킬 수 있다.
직접적으로 에러를 발생하지는 않는 예외적인 상황에 대해 대처가 없는 경우, 에러로 이어질 가능성이 크다.
⇒ 언제나 에러나 예외적인 상황이 발생할 수 있다는 것을 전제하고 대응하는 코드를 작성해야 한다.
47.2 try - catch - finally 문
에러 처리를 구현하는 방법
- 반환하는 값을 if문이나 단축 평가 또는 옵셔널 체이닝 연산자를 통해 확인해서 처리하는 방법
- 에러 처리 코드를 미리 등록해 두고 에러가 발생하면 에러 처리 코드로 점프하도록 하는 방법

47.3 Error 객체

message 프로퍼티 : Error 생성자 함수에 인수로 전달한 에러 메시지
stack 프로퍼티 : 에러를 발생시킨 콜스택의 호출 정보를 나타내는 문자열로, 디버깅 목적으로 사용됨
생성자 함수 | 인스턴스 |
Error | 일반적인 에러 객체 |
SyntaxError | 문법 에러 객체 |
ReferenceError | 참조할 수 없는 식별자의 참조 에러 객체 |
TypeError | 데이터 타입이 유효하지 않을 때의 에러 객체 |
RangeError | 숫자 값의 허용 범위를 벗어났을 때의 에러 객체 |
URIError | encodeURI, decodeURl 함수에 부적절한 인수를 전달했을 때의 에러 객체 |
EvalError | eval 함수에서 발생하는 에러 객체 |
47.4 throw 문
에러를 발생시키려면 try 코드 블록에서 throw 문으로 에러 객체를 던져야 한다.

⇒ 아무것도 출력되지 않았다.

⇒ 생성된 에러 객체가 던져져 catch문의 에러 변수에 할당되었다.
47.5 에러의 전파
에러는 호출자 방향으로 전파된다.

⇒ throw된 에러 캐치 및 대응
⇒ 코드의 실행 흐름을 복구했다.

⇒ throw된 에러가 전역 실행 컨텍스트로 전파되며 프로그램이 강제 종료된다.