더북(TheBook)

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

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로 처리하지 못한 에러가 발생했지만 코드가 제대로 실행되었습니다.

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