본문 바로가기

Programming/Node.js

4. Node 기능 살펴보기 (11) - 예외 처리하기 [1]

node js logo image

 

 

 

예외는 통상적으로 '처리하지 못한 에러'로 보면 됩니다. 특히, 싱글 스레드로 작동하는 노드에서 예외가 발생하게 되면 실행 중인 노드 프로세슥가 멈추게 되고, 사실상 서버가 멈춰버리기 때문에 서비스 중단에 가까운 재앙이 발생하게 됩니다. 그래서 에러가 발생할 경우를 항상 대비하여 예외 처리에 신경을 써야 합니다. 

 

물론 이에 대해서 문법상에는 오류가 없다고 가정해야 합니다. 그리고 에러가 발생하더라도 에러 로그를 기록하되 작업 자체는 지속될 수 있도록 처리해야 합니다. 

 

아래와 같이 '프로세스는 멈추지 않도록' 에러를 처리해 보겠습니다. 

 

 

setInterval( () => {
    console.log('START');

    try{
        throw new Error("SERVER ERROR______----");
    } catch (err) {
        console.error(err);
    }
}, 1000 );





/* 출력
START
Error: SERVER ERROR______----
    at Timeout._onTimeout (C:\XXX\example.js:5:15)
    at listOnTimeout (node:internal/timers:573:17)
    at process.processTimers (node:internal/timers:514:7)      
    START
Error: SERVER ERROR______----
    at Timeout._onTimeout (C:\XXX\example.js:5:15)
    at listOnTimeout (node:internal/timers:573:17)
    at process.processTimers (node:internal/timers:514:7)      
    START
Error: SERVER ERROR______----
    at Timeout._onTimeout (C:\XXX\example.js:5:15)
    at listOnTimeout (node:internal/timers:573:17)
    at process.processTimers (node:internal/timers:514:7)      
    START
Error: SERVER ERROR______----
    at Timeout._onTimeout (C:\XXX\example.js:5:15)
    at listOnTimeout (node:internal/timers:573:17)
    at process.processTimers (node:internal/timers:514:7)      
    ....
*/

 

 

우선 예제 메서드로 setInterval을 사용했습니다. 특별한 조치 없이 1초마다 콜백이 계속 실행되므로, "프로세스가 중단 되는지" 여부를 확인할 수 있어서입니다. 그리고 setInterval 내부에서 throw new Error( ) 메서드를 사용해 강제로 에러를 발생시켰습니다. 

 

결과적으로 try / catch로 미리 처리를 선언해 두었기 때문에, catch를 통해서 에러에 관련된 처리를 수행하고 다시 정해진 동작을 반복하는 형태로 실행이 유지됩니다. try / catch로 미리 에러가 발생할 가능성이 있는 부분을 처리해두면 됩니다.