에러 핸들링 파트 정리
-
‘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
- 실제 발생한 에러의 구체적인 정보
-
-
-