본문 바로가기
TIL/Node JS

예외 처리 process.on('uncaughtException', (err) => { } );

by koreashowme 2019. 10. 21.

setInterval(() => {

   console.log('시작');

try{

   throw new Error('서버 고장내주마');

}catch (error){

    console.error(error);

}

 }, 1000);

try, catch를 쓰면 서버는 죽지 않는다.  권장사항은 아님. 굳이 에러를 낼 필요 없음.

async/await처럼 어쩔 수 없이 try/catch를 써야하는 경우도 있음.

 

 

setInterval(() => {

fs.unlink('./as.js', (err) => {

      if(err){ 

console.log('시작');
console.log(err);

console.log('끝');

 }

 });

}, 1000);

 

에러는 나지만  프로세서는 멈추지 않는다.

=> 노드 내장 메서드에서 발생하는 에러는, 에러가 나도 프로세스를 멈추지 않는다.

 

// uncaughtException 이벤트는, 처리하지 않은 예외. 한번에 모아서 처리해줌.

// 에러가 기록되고 처리할 수 있다. 하지만, error를 넘겨줘서 계속 error가 실행된다.

// uncaughtException에 의존하지 말고!!! 근본적인 에러의 원인을 해결해야만 한다!!!!

 

process.on('uncaughtException', (err) =>{

console.error('예기치 못한 에러', err);

// 서버를 복구하는 코드는 권장사항이 아님.

// uncaughtException 가 콜백이 실행되는 것을 보장하지 않기 때문.

})

 

setInterval(() =>{

throw new Error('서버를 고장내주마!');

}, 1000);

// 서버를 error 던져서, 다음 것이 실행 되지 않음.

 

setTimeout(() => {

console.log('실행됩니다.');

}, 2000);

comment