this question에 대한 대답에서 사람은 예외를 던지면서 도메인을 사용하지 말 것을 권장합니다. 왜냐하면 그는 memleaks와 불안정성을 유발하기 때문입니다. 하지만 이것이 도메인을 사용하는 방법입니다. 이제 혼란스러워. 그가 맞습니까?실제로 도메인을 사용하는 것이 안전합니까?
답변
that answer 어설 션과 달리 이 일 때 메모리 누수와 불안정을 초래할 수 있다고 보장 할 수 없습니다. 그러나 은 메모리 누수와 불안정을 일으키지 않고 예외를 처리 할 수 있음을 보장합니다.
내가 예외 처리 주위의 혼란의 핵심은 Node.js를 문서에서이 문구에서 유래 믿습니다
던져 자바 스크립트에서 작동하는 방법의 본질적으로 안전에 거의 결코 어떤 방법이 "참조를 누설하거나 정의되지 않은 취성 상태의 다른 종류를 만들지 않고"중단 한 부분을 선택하십시오.
발생 된 오류에 가장 안전하게 응답하는 방법은 프로세스를 종료하는 것입니다. 현실에서
http://nodejs.org/api/domain.html
는 예외가 특히 위험하게 자바 스크립트에 대한 특별한 것은 없다. 사실, 예외는 언어로 위험 할 수 있습니다. 요점은 응용 프로그램이 일으키는 부작용을주의 깊게 고려하고 반쯤 끝내면 위험 할 수있는 작업을 수행하는지 여부입니다 (힌트 : 아마도 있음).
This design guide from Joyent은 "프로그래머 오류"와 "연산 오류"를 구분합니다. 귀하의 질문에 대한 대답으로,이 안내서는 프로그래머 오류 (정의되지 않은 속성 읽기 포함)를 다루지 않으며 Domains와 process.on('uncaughtException')
은 주로 이러한 종류의 오류를 해결하기 때문에 피해야한다고 주장합니다.
도메인을 사용하는 가장 좋은 방법은 오류를 발견하는 것입니다. 또한 몇 시간에 한 번 이상 nodejs 프로세스를 다시 시작하는 것이 좋습니다. 클러스터링을 사용하면 동일한 포트에서 여러 개의 nodejs 프로젝트를 공유하고 제공 할 수 있습니다.
도메인을 따라 잡는 것이 무슨 뜻인지 잘 모르겠습니다. –
도메인은 꽤 단단한 오류를 잡을 수 있습니다. 즉, 예를 들어 express-errorhandler는 catch 할 수 없습니다. 예 : https://github.com/vodolaz095/hunt/blob/master/examples/index.js#L219-L228 for 오류보고 미들웨어 이것은 단순히 하나의 종료 코드 – vodolaz095
- 1. MainActivity를 사용하는 것이 안전합니까?
- 2. Drush를 사용하는 것이 얼마나 안전합니까?
- 3. Log.i를 생산에 사용하는 것이 안전합니까?
- 4. 의도를 다시 사용하는 것이 안전합니까?
- 5. 사용하는 것이 안전합니까? || 대신에? - JavaScript
- 6. ThreadPool.RegisterWaitForSingleObject가있는 이벤트를 사용하는 것이 안전합니까?
- 7. 현지화에 HttpModule을 사용하는 것이 안전합니까?
- 8. dll에서 인터페이스를 사용하는 것이 안전합니까?
- 9. QProcess에서 QTemporaryFile을 사용하는 것이 안전합니까?
- 10. OCUnit에서 속성을 사용하는 것이 안전합니까?
- 11. Delphi에서 제네릭을 사용하는 것이 안전합니까?
- 12. Phonegap에서 API를 사용하는 것이 안전합니까?
- 13. php - capthas를 사용하는 것이 얼마나 안전합니까?
- 14. 클라우드 응용 프로그램에서 세션을 사용하는 것이 안전합니까?
- 15. 삭제를 위해 MySQL Cascade를 사용하는 것이 안전합니까?
- 16. 실행중인 반복자의 도메인을 삭제하는 것이 안전합니까 (문서화 된 동작입니까?)
- 17. SSL은 실제로 얼마나 안전합니까?
- 18. 휴식 API로 도메인을 사용하는 것이 좋습니다.
- 19. javax.xml.ws.Service 객체를 다시 사용하는 것이 안전합니까?
- 20. BeginInvoke 호출에서 lock()을 사용하는 것이 안전합니까?
- 21. 작업자 스레드에서 SHFileOperation을 사용하는 것이 안전합니까?
- 22. 공용 네트워크에서 wxTCPConnection을 사용하는 것이 안전합니까?
- 23. move_uploaed_files 대신 ftp_put을 사용하는 것이 안전합니까?
- 24. 중앙 관리에서 관리자 작업을 사용하는 것이 안전합니까?
- 25. PHP에서 파일 캐시를 사용하는 것이 안전합니까?
- 26. 쿠키 경로에 대해 Request.ApplicationPath를 사용하는 것이 안전합니까?
- 27. beginner : 내 프로젝트에 modelica를 사용하는 것이 안전합니까?
- 28. list_for_each_entry 내부에서 break를 사용하는 것이 안전합니까?
- 29. 화면의 일부에서만 GLKViewController를 사용하는 것이 안전합니까?
- 30. 웹 사이트에서 상대 링크를 사용하는 것이 안전합니까?
으로 응용 프로그램을 중지합니다. 도메인의 목적은 오류가 발생할 때 ** 정상적으로 종료 할 수있는 ** 기회를주기위한 것임을 추가합니다. Node.js 앱은 일반적으로 장기 실행 단일 프로세스 내에서 실행되기 때문에 예상치 못한 일을하는 한 사용자가 수천 개의 다른 프로그램에 영향을 줄 수있는 경우 재앙이됩니다. 도메인을 사용하면 오류를 등록하고, 새 요청의 수락을 중지하고 가능한 경우 다른 요청의 완료를 허용 할 수 있습니다. 오류가있는 응용 프로그램을 찾으려면 도메인을'cluster' 모듈과 함께 사용해야하며 오류가 발생할 때마다 작업자를 중지하고 새 모듈을 생성하십시오. –