Préface
Il existe de nombreux types d'erreurs qui peuvent survenir dans les applications Node.js. Par exemple: lorsqu'une erreur de syntaxe ou une erreur d'exécution se produit, une erreur JavaScript sera déclenchée; Lorsque vous essayez d'accéder à un fichier qui n'existe pas ou n'est pas accessible, une erreur système sera déclenchée; En plus des erreurs JavaScript et des erreurs d'erreur système, les utilisateurs peuvent également personnaliser les erreurs.
1. Classification erronée
Node.js est une plate-forme d'exécution JavaScript, et ses erreurs d'application sont toutes une instance Error ou Error .
Dans les applications Node.js, il y a quatre erreurs possibles:
1. Erreurs JavaScript standard, telles que:
<EvalError> : lancé lorsque les appels eval() échouent
<SyntaxError> : lancé lors de l'utilisation de la syntaxe JavaScript illégale
<RangeError> : lancé lorsqu'une valeur n'est pas dans la plage spécifiée
<ReferenceError> : lancé lorsque la variable non définie est utilisée
<TypeError> : Lors du passage d'un paramètre de type d'erreur
<URIError> : lancé lorsqu'une fonction URI globale est utilisée de manière incorrecte
2. Erreur système. Ce type d'erreur est déclenché par le système sous-jacent, comme essayer d'ouvrir un fichier inexistant, essayant d'envoyer des données via un soket fermé, etc.
3. Erreurs personnalisées, ces erreurs sont déclenchées par l'utilisateur dans le code d'application.
4. Erreur d'assurance. Lorsque le code viole la logique légale, ce type d'erreur est déclenché par le module assert Node.js.
2. Erreurs JavaScript et erreurs système
2.1 Erreurs JavaScript et erreurs personnalisées
Des erreurs JavaScript standard sont fournies par la langue JavaScript, indiquant des erreurs de syntaxe ou une mauvaise utilisation des API. Toutes les erreurs sont une instance de Error , tandis que les erreurs JavaScript standard sont construites par la langue elle-même lorsqu'une erreur se produit.
Lors de la personnalisation des erreurs, utilisez le constructeur pour créer une instance:
> Jetez une nouvelle erreur («Une erreur s'est produite, c'est le message d'erreur»); Erreur: un message d'erreur a été trouvé au REPL: 1: 7 à RepServer.DefaultEval (REPL.JS: 248: 27) AT BOND (Domain.js: 280: 14) AT REPSERVER.RUNBOUND [AS EVAVE] (Domain.js: 293: 12) AT REPSERVER. emitone (events.js: 82: 20) sur replServer.emit (events.js: 169: 7) sur repServer.interface._online (readline.js: 210: 10) sur replServer.interface._line (readline.js: 549: 8) sur replServer.interface._ttywrite (readline.js: 826: 14)
Comme ci-dessus, nous avons personnalisé une erreur et lancé l'erreur à l'aide du mot clé à lancer. Dans cet objet d'erreur, il comprend le message d'erreur et la stack d'informations de pile d'erreur. Après la capture des exceptions, ces informations sont accessibles via les deux propriétés suivantes:
1. error.message - Message d'erreur
2. error.stack - Informations sur la trace de pile d'erreur
En plus des propriétés de l'instance d'erreur elle-même, vous pouvez également personnaliser certaines propriétés d'erreur. Par exemple, personnalisez un statut de propriété qui représente le statut:
var error = new error ('La page que vous avez visitée n'existe pas'); error.status = 404;2.2 Erreur système
Les erreurs système sont une extension des objets Error d'erreur JavaScript, qui représentent les erreurs opérationnelles que les programmes peuvent gérer, et ces messages d'erreur sont générés au niveau du système. En plus des attributs de l'instance Error , l'instance d'erreur système comprend également les attributs suivants:
1. error.syscall - une chaîne représentant les informations d'appel système échoué
2. error.errno - un code d'erreur entier
3. error.code - représente une chaîne d'erreur, en commençant généralement par la lettre majuscule E
3. Capture d'exception
Node.js adopte une base de programmation axée sur les événements et asynchrone, ce qui signifie que try / catch ne peut pas attraper des erreurs qui se produisent lors du traitement de manière asynchrone. Pour ce cas, nous pouvons utiliser les deux façons suivantes pour attraper ou passer l'erreur:
Capture d'exception dans la fonction de rappel Node.js
Node.js possède de nombreuses API asynchrones, qui sont ensuite traitées via le rappel de la fonction de rappel. Si une erreur se produit, un objet Error sera généralement inclus dans le premier paramètre de la fonction callback ; Si aucune erreur ne se produit, le premier paramètre sera null . comme:
const fs = require ('fs'); fs.readfile ('un fichier inexistant', (err, data) => {if (err) {console.error ('lire l'erreur de fichier', err); return;} // autre traitement});Gestion des erreurs basées sur des événements
Si l'objet est un EventEmitter , l'erreur peut être capturée et gérée via l'的'error' l'objet:
const net = require ('net'); const Connection = net.connect ('localhost'); // ajouter un gestionnaire d'événements 'error' au flux: connection.on ('error', (err) => {// si la connexion est réinitialisée par le serveur ou ne peut pas se connecter au serveur spécifié // ou d'autres erreurs de connexion.Résumer
Ce qui précède est un résumé de certains types d'erreur dans Node.js. Si vous pouvez comprendre les types d'erreur dans Node.js, vous pouvez nous aider à mieux gérer les erreurs et les captures d'exception. J'espère que le contenu de cet article sera utile à tout le monde.