노드 에러처리

노드에서는 예외처리가 정말 중요!

멀티 스레드 프로그램에서 스레드 하나가 멈추면 그 일을 다른 스레드가 대신한다. 하지만! 노드는 스레드가 하나뿐이고…… 그 하나를 아주 소중하게 보호해야 한다. 하나뿐인 스레드에서 에러로 인해 멈춘다면! 서버가 멈춘다는 뜻……… 그렇기에 우리는 에러를 처리하는 방법을 익혀야 한다.

1 예외 던지기

err1.js

1
2
3
4
5
6
7
8
9
setInterval(()=> {

console.log('start');
try{
throw new Error('break the server');
}catch (err){
console.error(err);
}
}, 1000);

2 error 발생시 기록 후 후 대처 방법

1
2
3
4
5
6
7
8
9
const fs =require('fs');

setInterval(()=>{
fs.unlink('./trash.js', (err) => {
if(err){
console.error(err);
}
});
}, 1000);

3 예측 할수 없는에러(지양)

1
2
3
4
5
6
7
8
9
10
11
12
process.on('uncaughtException', (err)=>{

console.error('이런 에러가! ', err);
});

setInterval(() => {
throw new Error('서버를 고장';)
}, 1000);

setTimeout(() => {
console.log('실행');
}, 2000);

모든 에러를 잡아 줄거 같지만!
노드 공식 문서에서 uncaughtException사용 지양

<node.js교과서 3장 참조>