더북(TheBook)

멀티스레드 프로그래밍은 대용량 처리에서 필수적으로 사용하는 프로그래밍 방식이지만, 오류를 찾아내기 어렵고 구현할 때 고려할 사항이 많아 그동안 개발자들을 괴롭혀 왔습니다. Node.js는 이러한 복잡한 멀티스레드 대신 싱글 스레드 프로그래밍만으로도 멀티스레드 프로그래밍 성능을 구현하도록 프레임워크가 구성되어 있습니다.

Node.js는 싱글 스레드 기반으로 동작합니다. 여기서 주의할 점은 싱글 스레드라고 해서 모두 같은 스레드 위에서 동작하지 않는다는 것입니다. 코드 3-2와 같이 비동기 호출을 할 경우 함수를 호출한 영역과 콜백을 처리하는 영역이 각기 다른 스레드 위에서 동작합니다. 이때 try~catch 문으로 모든 예외 처리를 하기에는 무리가 있습니다. Node.js는 모든 스레드에서 예외 처리를 할 수 있도록 uncaughtException 이벤트를 제공합니다.

코드 3-3은 uncaughtException 이벤트를 이용한 예외 처리입니다.

코드 3-3 uncaughtException 이벤트를 이용한 예외 처리

예제 파일 : uncaughtException.js

function func(callback) {
    process.nextTick(callback, "callback!!");
}

try {
    func((param) => {
        a.a = 0;
    });
} catch (e) {
    console.log("exception!!");
}

process.on("uncaughtException", (error) => { // 모든 스레드에서 발생하는 예외 처리
    console.log("uncaughtException!!");
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.