관리 메뉴

Bbaktaeho

[Javascript/Node.js] 싱글 스레드 프로그래밍 (uncaughtExcetion) 본문

프로그래밍 (Programming)/자바스크립트 (JavaScript)

[Javascript/Node.js] 싱글 스레드 프로그래밍 (uncaughtExcetion)

Bbaktaeho 2020. 5. 26. 00:49
반응형

📚 스레드

  • CPU는 한 번에 하나의 명령만 수행 가능함
  • CPU 클럭 수에 따라 처리속도가 결정
  • CPU의 속도는 정해져 있고 한 번에 하나의 명령을 처리하는 단점을 극복하기 위해서 스레드를 도입함
  • 스레드를 도입하여 운영체제의 스케줄러가 매우 짧은 주기로 다른 명령을 실행하면 동시에 여러 명령을 처리하는 것처럼 보임

📚 멀티 스레드 프로그래밍

  • 스레드를 도입하여 운영체제의 스케줄러가 매우 짧은 주기로 다른 명령을 실행하면 동시에 여러 명령을 처리하는 것처럼 보임
  • 멀티 스레드 프로그래밍은 대용량 처리에서 필수적으로 사용하는 프로그래밍 방식
  • 단점으로 오류를 찾기 어렵고 구현할 때 고려할 사항이 많음

📚 싱글 스레드 프로그래밍

  • Node.js는 싱글 스레드 프로그래밍으로 멀티 스레드 프로그래밍 성능을 구현하도록 구성되어 있음
  • Node.js는 싱글 스레드 기반으로 동작하지만 모두 같은 스레드 위에서 동작하지 않는다는 점을 알아야 함

📗 uncaughtExcetion

모든 스레드에서 예외 처리를 할 수 있도록 하는 이벤트

  • process.on("uncaughtException", callback)

  • 비동기 호출을 할 경우 함수를 호출한 영역과 콜백을 처리하는 영역이 각기 다른 스레드 위에서 동작

  • try catch 문으로 모든 스레드에서 예외 처리를 할 수 없음

  • nextTick 함수를 활용하여 비동기를 구현하고 uncaughtException 이벤트로 예외처리

    비동기 처리를 위해 node.js의 내부 스레드 풀로 다른 스레드 위에서 콜백 함수를 동작시킴

function test(callback) {
    process.nextTick(callback, 2);
}

function sqrtCB(num) {
    throw Error('강제 에러 발생');
    console.log('sqrt 완료', Math.sqrt(num));
}

try {
    test(sqrtCB);
} catch (err) {
    console.error('에러입니다');
}

process.on('uncaughtException', (err) => {
    if (err) console.error(err.message);
});
에러발생

try catch 문으로 제어할 수 없던 예외 처리를 uncaughtException 이벤트로 제어함


반응형