본문 바로가기
Books/모던 JS Deep Dive ✔️

[모던 JS Deep Dive] 47장 - 에러 처리

by Aaron-Kim 2022. 1. 27.

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가 존재하지 않음

반응형

댓글