모던 자바스크립트 Deep Dive - 47. 에러 처리

둡둡·2024년 3월 26일

Modern Javascript Deep Dive

목록 보기
48/49

47.1. 에러 처리의 필요성

  • 에러는 언제나 발생할 수 있음
  • 에러나 예외 상황을 처리하지 않고 방치하는 경우 프로그램은 강제 종료됨
  • try...catch 문과 같은 대응 코드를 작성하는 것이 중요함

47.2. try...catch...finally

  • 기본적인 에러 처리 구현 방법
      1. querySelector 또는 Array#find 메서드 사용
      1. 에러 처리(error handling): try...catch...finally문 사용
  • try...catch...finally
    • try 문 실행 중에 에러 발생 시 error 문이 실행되며 error 변수 정보가 전달됨
    • finally 문은 에러 발생과 상관 없이 반드시 한 번 실행되며 생략 가능함
    • 에러 발생 시에도 프로그램이 강제 종료되지 않음

47.3. Error 객체

  • Error 생성자 함수는 에러 객체를 생성함
    • 에러 메시지를 인수로 전달 가능
    • message 프로퍼티: 인수로 전달한 에러 메시지
    • stack 프로퍼티: 에러를 발생시킨 콜 스택의 호출 정보를 나타내는 문자열, 디버깅 목적
  • 자바스크립트 7가지 Error 생성자 함수

47.4. throw 문

  • throw 문으로 에러 객체를 던져 에러를 발생시킴
    • 표현식의 값은 무관하지만 일반적으로 에러 객체를 지정함
try {
  throw new Error('something wrong');
} catch (error) {
  console.log(error);
}

47.5. 에러의 전파

  • 에러는 호출자 방향으로 전파됨
    • 콜 스택의 아래 방향 : 실행 중인 실행 컨텍스트가 푸시되기 직전에 푸시된 실행 컨텍스트 방향
  • throw 된 에러를 적절히 캐치하여 대응해야 함
    • 캐치하지 않으면 호출자 방향으로 계속 전파됨
  • 주의점: 비동기 함수나 프로미스의 콜백 함수는 호출자가 없음
    • 태스크 큐나 마이크로태스트 큐에 일시 저장되었다가 이벤트 루프에 의해 콜 스택으로 푸시되어 실행
    • 이때 푸시된 콜백 함수는 콜 스택의 가장 하부에 존재하므로 전파할 호출자가 존재하지 않음

[출처] 모던 자바스크립트, Deep Dive

profile
괴발개발라이프

0개의 댓글