Node.js - Error

ryan·2022년 5월 8일
0

노드에서의 예외

  • 예외(Exception) : 처리하지 못한 에러
  • 노드는 싱글 스레드이기 때문에 에러를 처리하지 못하면 프로세스 자체가 멈추게 된다.

예외 처리 방식

에러가 발생할 만한 곳을 try catch로 감싼다.

setInterval(() => {
  console.log('시작');
  try {
    throw new Error('에러 발생시키기');
  } catch (err) {
    console.error(err); // 에러를 처리함으로서 에러가 발생해도 프로세스가 멈추지 않는다.
  }
}, 1000);
  • 모든 곳에 위처럼 처리할 필요는 없음(try catch를 써야되는 곳과 안써도 되는 곳을 구분할 줄 알아야 함)

fs 모듈같은 경우 콜백 함수에서 error 객체를 제공하기 때문에 try, catch를 사용하지 않아도 된다.

const fs = require('fs');
setInterval(() => {
  fs.unlink('./abcdefg.js', (err) => {
    console.error(err);
  });
}, 1000);
  • node 실행하면 에러가 반복해서 콘솔에 찍힘(프로세스가 멈추지 않음)
  • node에서 비동기 모듈의 콜백 함수에서의 에러는 프로세스를 멈추지 않는다.

모든 에러를 한 곳으로 모아서 처리시키는 방법

process.on('uncaughtException', (err) => {
  console.error('에러 발생', err);
});
  • 위와 같이 하면 에러가 발생해도 프로세스가 멈추진 않음
  • 단, 콜백 함수의 동작이 보장되지 않기 때문에 에러 내용 기록용으로만 사용해야 함.

에러를 처리하는 가장 좋은 자세는 빠르게 에러 발생 위치와 원인을 파악해서 코드를 고치고 서비스를 재시작해야 함.

프로세스 종료 명령어

 $ netstat -ano | findstr 포트
 $ taskkill /pid 프로세스아이디 /f
profile
프론트엔드 개발자

0개의 댓글