자바스크립트 예외와 에러 처리

2018-02-23

1. Error 객체

  • 자바스크립트에는 내장된 Error 객체가 있고 이 객체는 에러 처리에 간편하게 사용할 수 있다.
  • 에러메세지는 Error 객체의 message 프로퍼티에 있다.
    const err = new Error('error msg');
    
  • Error 예제


2. try/catch 예외처리

  • 예상치 못한 에러에 대처하려면 try…catch 문으로 코드 전체를 감쌀 수 있다.
  • 에러를 캐치했으므로 프로그램은 멈추지 않고, 에러를 기록하고 계속 진행할 수 있음
  • try…catch 예제


3. throw

  • 직접 에러를 일으켜서(throw) 예외 처리 작업을 시작할 수 있음
  • throw를 호출하면 현재 함수는 즉시 실행을 멈춤.
  • throw 예제

4. 예외 처리와 호출 스택

  • 함수 c가 실행을 마칠 때 실행 흐름은 b로 돌아가고, 함수 b가 실행을 마칠 때 실행 흐름은 a로 돌아간다
  • c가 실행 중 일때는 a와 b는 완료될 수 없다.
  • 완료되지 않은 함수가 쌓이는 것을 호출 스택(call stack)이라고 한다.
  • c에서 에러가 일어나면, b에서도 일어나고 따라서 a에서도 일어난다. 에러는 캐치될 때까지 호출 스택을 따라 올라간다.
    function a(){  b(); }
    function b(){  c(); }
    function c(){ }
    


  • Error 인스턴스에는 스택을 문자열로 표현한 stack 프로퍼티가 있다
  • 예외 처리 예제

5. try…catch…finally

  • try 블록의 코드가 HTTP 연결이나 파일 같은 일종의 ‘자원’을 처리해야 할 때가 있다.
  • finally 블록은 에러가 일어나든, 일어나지 않든 반드시 호출된다.