본문 바로가기
NodeJS

[NodeJS] 예외 처리하기

by Yeoseungwon 2023. 6. 29.
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