1 minute read

  • ‘try…catch’ 와 에러 핸들링

    • try..catch…finally

      • 런타임 에러 처리

      • 실행 불가능한 코드는 엔진이 이해할 수 없기 떄문에 에러 처리 동작 안 함

      • 스크립트 죽는 것 방지

      • 동기적으로 동작하므로 비동기 함수에서 실행하고 싶을 시 비동기 함수의 코드 블록 내부에서 실행

      • 안의 변수는 해당 코드 블록의 지역 변수

      • try

        • 코드 실행

        • 에러 만날 시 코드 중단 후 제어흐름 catch 블록으로 넘김

        • 발생한 에러는 항상 밖으로 떨어져 나옴

      • catch

        • 에러 잡음

        • 에러 발생 시 코드 블록 실행

        • () 엔 에러 객체 담기며 생략 가능

        • 생략 가능하며 에러는 밖으로 떨어져 나옴

      • finally

        • try/catch 이후 에러 발생 여부 상관 없이 코드 블록 실행

        • try/catch 에서 값이 바깥 코드로 반환되기 전에 실행됨

      • throw

        • 에러 직접 만들때 사용

        • 인수에 모든 것 넘길 수 있음

        • try에서 catch 블록에 이 객체를 인수로 코드 블록에 전달 시 사용

        • 대부분 내장 Error 클래스를 상속받은 에러 객체를 인수에 넘김

        • 함수에서 만났을 시 바로 종료됨

    • 에러 객체

      • 프로퍼티

        • message : 사람이 읽을 수 있는 형태의 에러 메세지

        • name : 에러 이름을 담은 문자열(에러 생성자 이름)

        • stack : 표준이 아니지만 대부분의 호스트 환경이 지원하는 프로퍼티. 에러 발생한 순간의 스택 나타냄

    • 다시 던지기

      • 에러 처리시 사용되는 중요한 패턴

      • catch 블록에서 대게 예상됐거나 어떻게 다룰지 아는 에러를 다루고 예상치 못한 에러를 다시 밖으로 던짐

    • 전역 에러 핸들러

      • try.. catch 없이도 대부분 에러 호스트 환경이 에러 핸들러 지원

      • ‘떨어져 나온’ 에러 잡음

      • 스크립트 죽었을 때 잡아냄

      • 에러 핸들러 프로퍼티에 함수 할당해 에러 처리

      • 에러 로깅 관련 서비스로 에러 발생 시 에러 내용 담아서 네트워크 요청 보내 에러 확인 가능

  • 커스텀 에러와 에러 확장

    • 커스텀 에러 클래스

      • Error 나 다른 내장 에러 클래스 상속받아 만듦

      • super 호출, name 프로퍼티 중요

      • name 프로퍼티

        • 서드파티 라이브러리에서 온 에러 객체의 종류 알아낼 때 사용

        • constructor.name으로 할당 작업 간편화

    • instanceof

      • 에러 종류 판별

      • 클래스 상속을 이용

    • 예외 감싸기

      • 에러 처리 기술

      • 적용한 함수는 모든 에러를 종류별로 처리하지 않음

      • 추상 에러

        • 모든 에러를 포함할 수 있는 에러

        • 에러 발생시 던짐

        • err.cause

          • 실제 발생한 에러의 구체적인 정보

Categories: ,

Updated: