이번에는 정말 예측이 불가능한 에러를 처리하는 방법을 알아보겠습니다.

    error4.js

    process.on('uncaughtException', (err) => {
      console.error('예기치 못한 에러', err);
    });
    
    setInterval(() => {
      throw new Error('서버를 고장내주마!');
    }, 1000);
    setTimeout(() => {
      console.log('실행됩니다');
    }, 2000);

    process 객체에 uncaughtException 이벤트 리스너를 달았습니다. 처리하지 못한 에러가 발생했을 때 이벤트 리스너가 실행되고 프로세스가 유지됩니다. 이 부분이 없다면 위 예제에서는 setTimeout이 실행되지 않습니다. 실행 후 1초 만에 setInterval에서 에러가 발생해 프로세스가 멈추기 때문입니다. 하지만 uncaughtException 이벤트 리스너가 연결되어 있으므로 프로세스가 멈추지 않습니다.

    콘솔

    $ node error4
    예기치 못한 에러 Error: 서버를 고장내주마!
    ...
    실행됩니다
    예기치 못한 에러 Error: 서버를 고장내주마!
    예기치 못한 에러 Error: 서버를 고장내주마!
    // 계속 반복

    try/catch로 처리하지 못한 에러가 발생했지만 코드가 제대로 실행되었습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.