2014-11-06 6 views

답변

3

that answer 어설 션과 달리 일 때 메모리 누수와 불안정을 초래할 수 있다고 보장 할 수 없습니다. 그러나 은 메모리 누수와 불안정을 일으키지 않고 예외를 처리 할 수 ​​있음을 보장합니다.

내가 예외 처리 주위의 혼란의 핵심은 Node.js를 문서에서이 문구에서 유래 믿습니다

던져 자바 스크립트에서 작동하는 방법의 본질적으로 안전에 거의 결코 어떤 방법이 "참조를 누설하거나 정의되지 않은 취성 상태의 다른 종류를 만들지 않고"중단 한 부분을 선택하십시오.

발생 된 오류에 가장 안전하게 응답하는 방법은 프로세스를 종료하는 것입니다. 현실에서

http://nodejs.org/api/domain.html

는 예외가 특히 위험하게 자바 스크립트에 대한 특별한 것은 없다. 사실, 예외는 언어로 위험 할 수 있습니다. 요점은 응용 프로그램이 일으키는 부작용을주의 깊게 고려하고 반쯤 끝내면 위험 할 수있는 작업을 수행하는지 여부입니다 (힌트 : 아마도 있음).

This design guide from Joyent은 "프로그래머 오류"와 "연산 오류"를 구분합니다. 귀하의 질문에 대한 대답으로,이 안내서는 프로그래머 오류 (정의되지 않은 속성 읽기 포함)를 다루지 않으며 Domains와 process.on('uncaughtException')은 주로 이러한 종류의 오류를 해결하기 때문에 피해야한다고 주장합니다.

+0

으로 응용 프로그램을 중지합니다. 도메인의 목적은 오류가 발생할 때 ** 정상적으로 종료 할 수있는 ** 기회를주기위한 것임을 추가합니다. Node.js 앱은 일반적으로 장기 실행 단일 프로세스 내에서 실행되기 때문에 예상치 못한 일을하는 한 사용자가 수천 개의 다른 프로그램에 영향을 줄 수있는 경우 재앙이됩니다. 도메인을 사용하면 오류를 등록하고, 새 요청의 수락을 중지하고 가능한 경우 다른 요청의 완료를 허용 할 수 있습니다. 오류가있는 응용 프로그램을 찾으려면 도메인을'cluster' 모듈과 함께 사용해야하며 오류가 발생할 때마다 작업자를 중지하고 새 모듈을 생성하십시오. –

0

도메인을 사용하는 가장 좋은 방법은 오류를 발견하는 것입니다. 또한 몇 시간에 한 번 이상 nodejs 프로세스를 다시 시작하는 것이 좋습니다. 클러스터링을 사용하면 동일한 포트에서 여러 개의 nodejs 프로젝트를 공유하고 제공 할 수 있습니다.

+0

도메인을 따라 잡는 것이 무슨 뜻인지 잘 모르겠습니다. –

+0

도메인은 꽤 단단한 오류를 잡을 수 있습니다. 즉, 예를 들어 express-errorhandler는 catch 할 수 없습니다. 예 : https://github.com/vodolaz095/hunt/blob/master/examples/index.js#L219-L228 for 오류보고 미들웨어 이것은 단순히 하나의 종료 코드 – vodolaz095

관련 문제