FE/리뷰

[모던 자바스크립트 딥다이브] 47장 에러 처리

따봉치치 2024. 6. 9. 17:52
728x90

에러 처리의 필요성
  • 발생한 에러에 대해 대처하지 않고 방치하면 프로그램은 강제 종료됨
  • try - catch 문을 사용해 발생한 에러를 적절하게 대응하면 프로그램은 강제 종료되지 않고 계속해서 코드를 실행시킬 수 있음
  • 예외적인 상황에 적절하게 대처하지 않으면 에러로 이어질 가능성이 큼
  • 에러나 예외적인 상황은 너무나 다양하기 때문에 아무런 조치 없이 프로그램이 강제 종료된다면 원인을 파악하여 대응하기 어려움

 

 

try - catch - finally 문
try {
 // 실행할 코드 (에러가 발생할 가능성이 있는 코드)
} catch (err) {
 // try 코드 블록에서 에러가 발생하면 이 블록의 코드가 실행됨
 // err 에는 try 코드 블록에서 발생한 Error 객체가 전달됨
} finally {
 // 에러 발생과 상관없이 반드시 한 번 실행됨
}

 

 

 

Error 객체
  • Error 생성자 함수는 에러 객체를 생성함
  • 에러 객체는 message 프로퍼티와 stack 프로퍼티를 갖음
    • message : Error 생성자 함수에 인수로 전달한 에러 메시지
    • stack : 에러를 발생시킨 콜 스택의 호출 정보를 나타내는 문자열, 디버깅 목적
생성자 함수 인스턴스
Error 일반적 에러 객체
SyntaxError 자바스크립트 문법에 맞지 않는 문을 해석할 때 발생하는 에러 객체
ReferenceError 참조할 수 없는 식별자를 참조했을 때 발생하는 에러 객체
TypeError 피연산자 또는 인수의 데이터 타입이 유효하지 않을 때 발생하는 에러 객체
RangeError 숫자값의 허용 범위를 벗어났을 때 발생하는 에러 객체
URIError encodeURI 또는 decondeURI 함수에 부적절한 인수를 전달했을 때 발생하는 에러 객체
EvalError eval 함수에서 발생하는 에러 객체

 

 

 

throw 문
  • throw 문의 표현식은 어떤 값이라도 상관없지만 일반적으로 에러 객체를 지정함
  • 에러를 던지면 catch 문의 에러 변수가 생성되고 던져진 에러 객체가 할당되며 catch 코드 블록이 실행되기 시작함

 

 

에러의 전파
  • throw 된 에러를 캐치하지 않으면 호출자 방향으로 전파됨
  • 이때 throw된 에러를 캐치하여 적절히 대응하면 프로그램을 강제 종료시키지 않고 코드의 실행 흐름을 복구할 수 있지만 캐치하지 않으면 프로그램은 강제 종료됨

 

 

728x90