728x90
예외란?
- 처리하지 못한 에러
멀티 스레드 프로그램에서는 스레드 하나가 멈추면 그 일을 다른 스레드가 대신한다.
하지만 노드의 메인 스레드는 하나뿐이므로 그 하나를 소중히 보호해야 한다.
메인 스레드가 에러로 인해 멈춘다는 것은 스레드를 갖고 있는 프로세스가 멈춘다는 뜻이고, 전체 서버도 멈춘다는 뜻이다.
예외 처리 -> 에러 로그가 기록되더라도 작업은 계속 진행될 수 있도록
아래 예제는 프로세스가 멈추지 않도록 에러를 잡는 방법이다. 에러가 발생할 것 같은 부분을 try/catch 문으로 감싸면 된다.
프로세스가 멈추면 setInterval도 멈출 것이다.
setInterval(()=>{
console.log('시작');
try{
throw new Error('에러 강제 발생')
}catch(err){
console.log(err);
}
}, 1000);
>> 에러는 발생하지만 직접 멈추기 전까지는 계속 실행이 된다. 이렇게 에러가 발생할 것 같은 부분은 try/catch 로 감싸면 된다.
노드 16 버전부터는 프로미스의 에러는 반드시 catch해야 한다.
const fs = require('fs').promises;
setInterval(() => {
fs.unlink('./abcdefg.js').catch(console.log.error);
}, 1000);
** 서버 운영은 에러와의 싸움이다. 에러가 발생했을 때 철저히 기록(로깅)하는 습관을 들이고, 주기적으로 로그를 확인하면서 보완해나가야 한다.
728x90
'NodeJS' 카테고리의 다른 글
[NodeJS] http - 요청과 응답 (0) | 2023.06.30 |
---|---|
[NodeJS] 자주 발생하는 에러들 (0) | 2023.06.29 |
[NodeJS] 모듈 만들기 (0) | 2023.06.25 |
[NodeJS] REPL / JS파일 실행하기 (0) | 2023.06.24 |
[Node.JS] 기초 개념 (0) | 2023.06.04 |