47.1 에러 처리의 필요성
- 에러는 언제나 발생 가능
- try ... catch문 사용해서 에러에 적절하게 대응 (에러 처리 코드 미리 등록)
- if문, 단축 평가, 옵셔널 체이닝 연산자 활용
- 우리가 작성한 코드에서는 언제나 에러나 예외적인 상황이 발생할 수 있다는 것을 전제하고
이에 대응하는 코드를 작성하는 것이 중요
47.2 try ... catch ... finally 문
- 에러 처리 코드를 미리 등록해 두고 에러 발생 시 에러 처리 코드로 점프하도록 하는 방법 (Error Handling)
- try; 실행할 코드 (에러가 발생할 가능성이 있는 코드)
catch; try 코드 블록에서 에러 발생 시 이 코드 블록의 코드가 실행됨 (에러 객체 전달됨)
finally; 에러 발생 상관없이 반드시 한 번 실행됨
47.3 Error 객체
- Error 생성자 함수는 에러 객체 생성
- Error 생성자 함수; 일반적 에러 객체
- SyntaxError 생성자 함수; JS 문법에 맞지 않는 문 해석할 때 발생하는 에러 객체
- ReferenceError 생성자 함수; 참조할 수 없는 식별자 참조 시 발생하는 에러 객체
- TypeError 생성자 함수; 피연산자 또는 인수의 데이터 타입이 유효하지 않을 때 발생하는 에러 객체
- RangeError 생성자 함수; 숫자값의 허용 범위를 벗어났을 때 발생하는 에러 객체
- URIError 생성자 함수; encodeURI 또는 decodeURI 함수에 부적절한 인수 전달했을 때 발생하는 에러 객체
- EvalError 생성자 함수; eval 함수에서 발생하는 에러 객체
47.4 throw 문
- 에러 객체를 생성한다고 해서 에러가 발생하는 것은 아님
- 에러 발생 위해서는 try 블록에서 throw문으로 에러 객체를 던져야 함
47.5 에러의 전파
- 에러는 caller 방향으로 전파됨
- 콜 스택의 아래 방향(Running Execution Context가 push 되기 직전에 push된 실행 컨텍스트 방향) 으로 전파됨
- 비동기 함수는 에러를 전파할 caller가 존재하지 않음
'Books > 모던 JS Deep Dive ✔️' 카테고리의 다른 글
[모던 JS Deep Dive] 49장 - Babel과 Webpack을 이용한 ES6+/ES.NEXT 개발 환경 구축 (마지막) (0) | 2022.01.27 |
---|---|
[모던 JS Deep Dive] 48장 - 모듈 (0) | 2022.01.27 |
[모던 JS Deep Dive] 46장 - 제너레이터와 async/await (0) | 2022.01.27 |
[모던 JS Deep Dive] 45장 - 프로미스 (0) | 2022.01.27 |
[모던 JS Deep Dive] 44장 - REST API (0) | 2022.01.26 |
댓글