프로그래밍 (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 이벤트로 제어함
반응형