더북(TheBook)

nextTick.js 파일을 실행합니다.

> node nextTick.js

D:\microservice\nextTick.js:7

        a.a = 0; // 예외 발생

        ^

ReferenceError: a is not defined

    at func (D:\microservice\nextTick.js:7:9)

    at _combinedTickCallback (internal/process/next_tick.js:71:11)

    at process._tickCallback (internal/process/next_tick.js:98:9)

    at Module.runMain (module.js:606:11)

    at run (bootstrap_node.js:394:7)

    at startup (bootstrap_node.js:149:9)

    at bootstrap_node.js:509:3

의도적으로 콜백 이후에 예외가 발생하도록 선언되지 않은 변수에 접근하게 했습니다(). func 함수에서는 process.nextTick 함수를 이용해 비동기로 동작하도록 코드를 수정했습니다(). try~catch 문을 적용했으니 “exception!!”이라는 문자를 화면에 표시해야 합니다(, ). 하지만 try~catch 문이 실행되지 않고 프로세스 실행 에러가 발생합니다. process.nextTick 함수는 비동기 처리를 위해 Node.js 내부의 스레드 풀로 다른 스레드 위에서 콜백 함수를 동작합니다. try~catch 문은 같은 스레드 위에서만 동작하기 때문에 서로 다른 스레드 간의 예외 처리가 불가능합니다. 이처럼 process.nextTick 함수를 이용하면 Node.js가 CPU를 효율적으로 사용하는 대신 try~catch 문만으로는 예외 처리가 불가능합니다. 다음 절에서는 Node.js의 싱글 스레드 프로그래밍 개념과 예외 처리 방법을 알아보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.