Table des matières
Exceptions non interceptées dans Node.js
Table des matières :
1. Problèmes causés par les exceptions non détectées
2. Comment gérer les exceptions non interceptées
3. Une application sans exceptions non capturées
4. Faites planter votre application
5. Faites comme si vous ne voyiez pas l'erreur ?
6. L'application plante, imprime le journal, puis redémarre
[Note du traducteur : désormais obsolète] Domains
8. 结论
Maison interface Web js tutoriel Comment résoudre les exceptions non interceptées dans Node.js

Comment résoudre les exceptions non interceptées dans Node.js

Sep 27, 2017 am 10:00 AM
javascript node.js 怎么


Exceptions non interceptées dans Node.js

La gestion des exceptions non interceptées dans Node.js n'est pas facile

Table des matières :

  • Problèmes causés par des exceptions non interceptées

  • Comment gérer les exceptions non interceptées

  • Une application avec aucune exception non détectée

  • Casser votre application

  • Faire semblant de ne pas voir l'erreur ?

  • L'application plante, imprime le journal, puis redémarre

  • Utiliser le module Domaines [Note du traducteur : désormais obsolète]

  • Conclusion

1. Problèmes causés par les exceptions non détectées

En raison de la nature monothread de Node.js, les exceptions non détectées constituent un problème pour le développement d'applications. Problèmes à noter au cours du processus. Node.js suit un modèle de rappel d'erreurs en premier, puis de données. On voit souvent cet exemple : lorsque la fonction de rappel renvoie un objet d'erreur, l'erreur est renvoyée immédiatement.

var fs = require('fs');

fs.readFile('somefile.txt', function (err, data) {
  if (err) throw err;
  console.log(data);
});
Copier après la connexion

Si vous exécutez ce programme et en supposant que vous n'avez pas le fichier somefile.txt, une erreur sera générée.

Error: ENOENT, open 'somefile.txt'
Copier après la connexion

Cela entraînera un blocage du processus et affectera l'ensemble de l'application.
Ceci est intentionnel, Node.js n'a pas l'intention de séparer votre application de votre service.

2. Comment gérer les exceptions non interceptées

Quelle est la meilleure façon de gérer les exceptions non interceptées ? Il existe des tonnes de façons :

  • Votre application ne devrait pas avoir d'erreurs non détectées, c'est fou.

  • C'est aussi fou que vous deviez laisser votre application trouver des exceptions non interceptées après un crash, puis les corriger.

  • Fermer les yeux sur une erreur et ne pas y faire face, c'est ce que font la plupart des gens, et ça craint.

  • Vous devez laisser votre application imprimer le journal des erreurs après un crash, puis redémarrer le processus en utilisant quelque chose comme upstart , forever , monit . Cette méthode est très pratique.

  • [Note du traducteur : désormais obsolète] Vous devriez commencer à utiliser le module Domaines pour gérer les erreurs. C'est la seule voie à suivre, bien qu'il s'agisse encore d'une fonctionnalité expérimentale de Node.js.

Développons maintenant ces méthodes en détail.

3. Une application sans exceptions non capturées

Le concept "d'une application sans exceptions non capturées" me semble bizarre, toute application aura des exceptions à un moment donné et il peut s'agir d'une exception non capturée. Si vous insistez sur ce point et envoyez des erreurs aux utilisateurs, alors je pense que vous devriez être prêt à recevoir un appel téléphonique au milieu de la nuit et à être informé que le service est tombé en panne.

4. Faites planter votre application

La seule défense que je peux trouver dans cet avis est l'argument d'échec rapide. Vous allez réparer votre application rapidement si elle est indisponible s'il s'agit d'une application sans exceptions non détectées. laisser le refus de votre application équivaut à une acceptation. Mais vous imposez toujours la gestion des exceptions à vos utilisateurs (pardonnez-moi de ne pas comprendre comment traduire ce paragraphe. Si vous avez de bonnes idées, veuillez me contacter dès que possible ! )

5. Faites comme si vous ne voyiez pas l'erreur ?

Beaucoup de gens font cela :

<p style="margin-bottom: 7px;">process.on(&#39;uncaughtException&#39;, function (err) {<br/>  console.log(err);<br/>})<br/></p>
Copier après la connexion

C'est mauvais lorsqu'une exception non interceptée est levée, vous devez réaliser que votre application est dans un état anormal. Dans ce cas, vous ne pouvez pas exécuter votre programme. de manière fiable.

Le Felix Geisendörfer qui a initialement proposé l'événement process.on propose maintenant de le supprimer.

6. L'application plante, imprime le journal, puis redémarre

Avec cette méthode, vous pouvez faire planter votre application immédiatement lorsqu'une exception non interceptée se produit, puis utiliser forever ou upstart comme ça L'outil redémarre (presque) instantanément. Node.js écrira l'exception dans STERR afin que vous puissiez rediriger l'exception vers un fichier journal et en récupérer l'erreur plus tard. L'inconvénient de cette approche est qu'elle ne fournit pas un moyen élégant de gérer les pannes de courant temporaires ou les scénarios de panne de réseau i/o dans lesquels l'erreur se produit en dehors de votre code. Quel outil ! — Redémarrez l'application et réessayez. Si vous combinez cette stratégie avec i/o , le nœud peut redémarrer automatiquement tous les enfants qui génèrent une erreur et imprimer l'erreur. cluster module

var cluster = require(&#39;cluster&#39;);var workers = process.env.WORKERS || require(&#39;os&#39;).cpus().length;if (cluster.isMaster) {
  console.log(&#39;start cluster with %s workers&#39;, workers);  for (var i = 0; i < workers; ++i) {    var worker = cluster.fork().process;
    console.log(&#39;worker %s started.&#39;, worker.pid);
  }
  cluster.on(&#39;exit&#39;, function(worker) {
    console.log(&#39;worker %s died. restart...&#39;, worker.process.pid);
    cluster.fork();
  });
} else {  var http = require(&#39;http&#39;);
  http.createServer(function (req, res) {
    res.end("Look Mum! I&#39;m a server!\n");
  }).listen(3000, "127.0.0.1");
}
process.on(&#39;uncaughtException&#39;, function (err) {
  console.error((new Date).toUTCString() + &#39; uncaughtException:&#39;, err.message)
  console.error(err.stack)
  process.exit(1)
})
Copier après la connexion
7. Utilisez le module

[Note du traducteur : désormais obsolète] Domains

est une fonctionnalité expérimentale ajoutée dans la version Domains, qui fait que la gestion des exceptions devient plus souple et plus précis. Ce qui suit est un exemple où le fichier n'existe pas. En utilisant Node.js v0.8, vous pouvez déclencher un événement d'erreur pour un domaine spécifique. Vous pouvez également utiliser une gestion différente des exceptions pour différents scénarios. Cela vous permet de gérer les exceptions en conséquence en fonction de l'endroit où elles se produisent. Si quitter un processus revient à casser une noix avec un marteau, c'est comme un scalpel précis vous donnant un contrôle total sur le programme. domains

var domain = require(&#39;domain&#39;);var d = domain.create();var fs = require(&#39;fs&#39;);
d.on(&#39;error&#39;, function(err) {
  console.error(err);
});
d.run(function() {
  fs.readFile(&#39;somefile.txt&#39;, function (err, data) {
    if (err) throw err;
    console.log(data);
  });
});
Copier après la connexion

8. 结论

如果你在产品环境运行 Node.js 你起码应该对如何处理异常有一个想法。目前为止我相信当异常被抛出时,大多数人只是重启应用(也许是优雅地重启),Domains 为应用提供了一种更聪明的面对异常的能力,异常处理器可能会选择简单的清理、关闭某些连接,最坏的情况下,退出进程。关键点就在于你有了选择。

我抛下榔头拾起手术刀的时候应该已经到了

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment configurer la fonction de démarrage du clavier sur une carte mère GIGABYTE (activer le mode de démarrage du clavier sur la carte mère GIGABYTE) Comment configurer la fonction de démarrage du clavier sur une carte mère GIGABYTE (activer le mode de démarrage du clavier sur la carte mère GIGABYTE) Dec 31, 2023 pm 05:15 PM

Comment configurer le démarrage du clavier sur la carte mère de Gigabyte Tout d'abord, s'il doit prendre en charge le démarrage du clavier, il doit s'agir d'un clavier PS2 ! ! Les étapes de configuration sont les suivantes : Étape 1 : appuyez sur Suppr ou F2 pour entrer dans le BIOS après le démarrage, et entrez dans le mode avancé (avancé) du BIOS. Les cartes mères ordinaires entrent dans le mode EZ (facile) de la carte mère par défaut. pour appuyer sur F7 pour passer au mode avancé. Les cartes mères de la série ROG entrent dans le BIOS par défaut (nous utilisons le chinois simplifié pour démontrer) Étape 2 : Sélectionnez - [Avancé] - [Gestion avancée de l'alimentation (APM)] Étape 3 : Recherchez l'option [Réveil par le clavier PS2] Étape 4 : Cette option est désactivée par défaut. Après avoir tiré vers le bas, vous pouvez voir trois options de configuration différentes, à savoir appuyer sur [barre d'espace] pour allumer l'ordinateur, appuyer sur groupe.

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment activer la connexion directe d'une carte graphique indépendante sur Shenzhou Xuanlong m7e8s3 ? Comment activer la connexion directe d'une carte graphique indépendante sur Shenzhou Xuanlong m7e8s3 ? Jan 04, 2024 am 09:24 AM

Comment activer la connexion directe de la carte graphique indépendante du Shenzhou Xuanlong m7 Pour activer la fonction de connexion directe de la carte graphique indépendante du Shenzhou Xuanlong m7, vous pouvez suivre les étapes suivantes : 1. Tout d'abord, assurez-vous d'avoir installé le pilote de la carte graphique indépendante. Vous pouvez vous rendre sur le site officiel de Shenzhou ou sur le site officiel du fabricant indépendant de la carte graphique pour télécharger et installer le dernier pilote adapté à votre modèle de carte graphique. 2. Sur le bureau de l'ordinateur, cliquez avec le bouton droit sur un espace vide et sélectionnez « Panneau de configuration NVIDIA » dans le menu contextuel (s'il s'agit d'une carte graphique AMD, sélectionnez « Paramètres AMDradeon »). 3. Dans le panneau de configuration, recherchez « Paramètres 3D » ou une option du même nom et cliquez pour entrer. 4. Dans « Paramètres 3D », vous devez rechercher « Paramètres globaux » ou une option du même nom. Ici, vous pouvez spécifier l'utilisation d'un nom unique

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Comment distinguer les vraies et fausses boîtes à chaussures de chaussures Nike (maîtrisez une astuce pour les identifier facilement) Comment distinguer les vraies et fausses boîtes à chaussures de chaussures Nike (maîtrisez une astuce pour les identifier facilement) Sep 02, 2024 pm 04:11 PM

En tant que marque de sport de renommée mondiale, les chaussures Nike ont attiré beaucoup d'attention. Cependant, il existe également un grand nombre de produits contrefaits sur le marché, notamment de fausses boîtes à chaussures Nike. Distinguer les véritables boîtes à chaussures des fausses est crucial pour protéger les droits et les intérêts des consommateurs. Cet article vous fournira quelques méthodes simples et efficaces pour vous aider à faire la distinction entre les vraies et les fausses boîtes à chaussures. 1 : Titre de l'emballage extérieur En observant l'emballage extérieur des boîtes à chaussures Nike, vous pouvez découvrir de nombreuses différences subtiles. Les véritables boîtes à chaussures Nike contiennent généralement des matériaux en papier de haute qualité, doux au toucher et sans odeur âcre évidente. Les polices et les logos des boîtes à chaussures authentiques sont généralement clairs et détaillés, et il n'y a pas de flou ni d'incohérence de couleur. 2 : titre de marquage à chaud du logo. Le logo sur les boîtes à chaussures Nike est généralement imprimé à chaud. La partie de marquage à chaud sur la boîte à chaussures authentique s'affichera.

Quelle est la résolution du Savior y7000p lors de la lecture de CF (comment régler le plein écran lors de la lecture de CF sur Savior y7000) Quelle est la résolution du Savior y7000p lors de la lecture de CF (comment régler le plein écran lors de la lecture de CF sur Savior y7000) Jan 07, 2024 am 10:13 AM

Quelle est la résolution du Savior Y7000P lors de la lecture de CF ? La résolution du Savior Y7000P lors de la lecture de CF est de 1920*1080. Cet ordinateur étant équipé d'une carte graphique GTX1650 et d'un processeur i5-9300H, ses performances sont relativement bonnes et suffisantes pour répondre aux besoins de jeux comme CF. Dans le même temps, 1920*1080 est la résolution actuelle des moniteurs d'e-sport grand public, et la qualité et la clarté de l'image sont suffisantes. De plus, si certains joueurs ont des exigences plus élevées, vous pouvez réduire de manière appropriée les paramètres de qualité d'image du jeu pour obtenir une expérience de jeu plus fluide. Afin de profiter d'une expérience visuelle plus claire, vous pouvez régler la résolution du Savior y7000p à 2560*1400. De cette façon, vous pourrez profiter d’un affichage d’image de meilleure qualité. Equipé du modèle Savior Y7000P 2022

See all articles