Comment gérer toutes les exceptions dans node.js
Après avoir travaillé pour un couple de semaines avec node.js, j'ai trouvé qu'il y a une différence entre node.js les erreurs de serveur et régulière langages côté serveur comme PHP.
Un exemple simple: SI une erreur se produit dans notre site web pour TOUTE raison.
en PHP
Si un utilisateur d'envoyer certaines données non valides pour le serveur et MySQL, MySQL sortie d'erreur à l'utilisateur et l'ensemble de l'application ne se baisse pas.
en Nodejs
Si un utilisateur d'envoyer certaines données non valides pour le serveur et MySQL, Serveur nodejs va baisser et donc tous les utilisateurs se déconnectent et il n'y a pas de connexion entre les utilisateurs plus.
C'est vraiment un gros problème. dans les grandes applications web, Il est impossible de gérer toutes les erreurs à éviter serveur Nodejs pour aller vers le bas, et la question est de savoir
Est-il possible de gérer n'importe quel inconnu fatales erreurs et des exceptions à une sortie spécifique ou quelque chose comme ça.
domain
le soutien pour la gestion centralisée des erreurs.en particulier le paragraphe Attention: ne pas ignorer les erreurs! indique beaucoup au sujet de pourquoi le processus de besoins pour être tué et comment gérer cela.
Les domaines ont été dépréciées nodejs.org/api/domain.html
OriginalL'auteur Pars | 2013-11-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le uncaughtException événement sur le processus d'un objet pour en faire ce que vous voulez, mais comme d'autres l'ont dit, des domaines et de la capture ou de la gestion des erreurs au niveau correct est recommandé.
OriginalL'auteur The Reddest
Il vous suffit de valider la demande de données au sein de vos itinéraires, de rattraper une erreur (try-catch va travailler ici, puisque c'est une opération de synchronisation) et de les traiter par retour d'état HTTP approprié (par exemple, 400) de l'appelant et le journal de l'erreur. Si vous utilisez Express, vous n'avez même pas à utiliser try-catch comme Express va attraper tous synchrone des exceptions et vous permettra de gérer de façon centralisée.
Personnellement, je ne pense pas que la capture des erreurs de validation à l'aide de processus.('uncaughtException') correspond le mieux à votre besoin, pour deux raisons principales:
Vous pouvez lire ici à propos d'une autre erreur de manipulation des meilleures pratiques et spécifiquement référence à balles 4,6 et 10
OriginalL'auteur Yonatan