2011-10-13 2 views
6

node.js 스크립트가 있는데 오류가 발생할 때마다 node.js는 실행 된 오류로 인해 실행이 중지됩니다.node.js, 오류가있어서 스크립트가 중단되지 않습니까?

node.js의 오류를 검사하는 적절한 방법은 스크립트를 중단시키지 않고 node.js를 중지시키지 않으려면 어떻게해야합니까?

+0

오류를 수정 하시겠습니까? 'try ... catch' 블록에 잠재적 인 런타임 오류가있는 코드를 감싸니까? 다른 언어/통역관과 다른 점은 무엇입니까? – nrabinowitz

+0

@nrabinowitz 그래서 오류가 발생하면 잡기를 시도하면 스크립트를 깨뜨리지 않을 것입니까? 그리고 제 지식이 부족한 것을 용서해주세요. 아주 편안합니다. 그것을 배우려고 노력. – John

+0

예, Javascript의'try ... catch'는 다른 언어와 같은 방식으로 작동합니다. 런타임 코드에서 에러를 잡아서 처리 할 수 ​​있습니다 (구문 분석 오류와 같이 구문 분석 시간 오류에는 도움이되지 않지만). https://developer.mozilla.org/en/JavaScript/Reference/Statements/try..catch – nrabinowitz

답변

17

당신은 다음 설정하여 다른 캐치되지 않는 오류를 잡을 수 : 물론

process.on('uncaughtException', function (exception) { 
    // handle or ignore error 
    }); 

, 당신은 영원히 또는 노드 수퍼바이저, 스크립트가 "중지"할 때처럼 뭔가 스크립트를 실행하는 경우가 다시 시작됩니다 귀하의 문제를 해결할 수 있습니다.

+0

정말 대단히 편리합니다 ... 내 로그 파일을 검사 할 때 귀찮았습니다. – Carlton

+1

그래도 여전히 권장 할만합니까? 이것에 부작용이 있습니까? – Samson

+0

이 오류 처리 방법은 Joylet 웹 사이트에서 권장하지 않습니다. https://www.joyent.com/developers/node/design/errors – MattSidor

3

uncaughtException을 잡는 것이 더 이상 권장되지 않습니다.

domains을 사용하는 것이 바람직하다. "uncaughtException"또는 Domain을 사용하여 예외를 처리 한 후 프로세스를 다시 시작하는 것이 좋습니다.

프로세스를 자동으로 다시 시작하기 위해 NodeJS는 작업자 스레드 관리를 지원하는 Cluster이라는 또 다른 라이브러리를 제공합니다.

+1

도메인이 이제 공식적으로 사용되지 않습니다. https://nodejs.org/api/domain.html – MattSidor

관련 문제