Maison interface Web js tutoriel Introduction au mécanisme de gestion des erreurs JavaScript (avec exemples)

Introduction au mécanisme de gestion des erreurs JavaScript (avec exemples)

Oct 19, 2018 pm 03:29 PM
javascript

Cet article vous présente une introduction au mécanisme de gestion des erreurs JavaScript (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Parfois, dans la fonction outil que vous encapsulez, si aucun paramètre n'est transmis ou si des paramètres du mauvais type sont transmis, certaines erreurs doivent être renvoyées en guise d'avertissement si le framework n'est pas utilisé normalement, ce sera le cas ; jetez également Si quelque chose ne va pas, si vous ne savez rien de l'erreur, vous ne pourrez pas la déboguer. Sur la base de ce qui précède, il est nécessaire de comprendre le mécanisme de gestion des erreurs.

Ce qui suit est le résumé de l’auteur. S’il y a des erreurs, veuillez les signaler.

Constructeur d'erreur
Il y a un total de 8 constructeurs de types d'erreur dans la spécification JavaScript
Erreur -- objet d'erreur
SyntaxError --erreur de syntaxe du processus d'analyse
TypeError --non valide Type
ReferenceError -- Référence invalide
RangeError -- La valeur dépasse la plage valide
URIError -- Erreur lors de l'analyse du codage URI
EvalError -- Erreur lors de l'appel de la fonction d'évaluation
InternalError -- Interne erreur du moteur Javascript Des exceptions sont levées, "Trop de récursion"

Deux d'entre elles sont spécialement expliquées :
EvalError est une erreur lors de l'appel de la fonction eval et a été obsolète Pour des raisons de compatibilité descendante, les versions inférieures peuvent le faire. encore être utilisé.
InternalError renvoie une erreur si la récursion est trop profonde. La plupart des navigateurs ne l'ont pas implémentée. Il s'agit d'une méthode non standard et est désactivée dans l'environnement de production.
Relation d'héritage
Error est la classe de base de. d'autres types héritent de la classe Error et peuvent être utilisés Object.getPrototypeOf() fourni dans ES6 pour déterminer si une classe hérite d'une autre classe.

console.log(Object.getPrototypeOf(SyntaxError) === Error);    // true
console.log(Object.getPrototypeOf(TypeError) === Error);   // true
console.log(Object.getPrototypeOf(RangeError) === Error);   // true
console.log(Object.getPrototypeOf(URIError) ===  Error);   // true
console.log(Object.getPrototypeOf(EvalError) === Error);   // true
console.log(Object.getPrototypeOf(ReferenceError) === Error); // true
Copier après la connexion

Parlons de l'utilisation de chaque type d'erreur et des scénarios d'erreur.

Erreur
Un objet erreur peut être créé via le constructeur Error. Lorsqu'une erreur d'exécution se produit, un objet d'instance Error sera généré.
Syntaxe : new Error([message])
Paramètres :

message 可选,错误描述信息。
Copier après la connexion

Lance une erreur
Utilisez l'instruction throw pour lancer une exception
throw new Error('Throw here est le message d'erreur')
Après l'exécution, le résultat sera imprimé sur la console :
Erreur non capturée : ce qui est renvoyé ici est le message d'erreur
Remarque : après avoir utilisé throw pour lever une exception, le message suivant le code ne sera plus exécuté.

Capturer les erreurs
Vous pouvez capturer cette erreur via l'instruction try{}catch(){}

try{
   throw new Error('这里抛出的是错误信息')
 }
 catch(err){
   alert(err.name + ' '+ err.message)
   }
Copier après la connexion

Description de l'attribut :

 当使用new Error创建错误实例后,会有两个属性:
Copier après la connexion

let e = new Error('Le message d'erreur est émis ici');
attribut name, qui est le type d'erreur, cette fois est Error
attribut message, qui est le message d'erreur, ceci time est 'Ce qui est renvoyé ici est un message d'erreur'

SyntaxError
Erreur de syntaxe dans le processus d'analyse Il existe de nombreuses erreurs renvoyées par ce type, qui sont souvent des erreurs grammaticales causées lors de l'écriture, par exemple :

let n = 11;   // Uncaught SyntaxError: Invalid or unexpected token
let str = "hel"lo" // Uncaught SyntaxError: Unexpected identifier
let 123Var = 'hi' // Uncaught SyntaxError: Invalid or unexpected token
Copier après la connexion

Il existe de nombreuses erreurs de syntaxe, donc je ne les listerai pas toutes. Lors de l'exécution dans le navigateur, la console générera une erreur et vous indiquera de quelle ligne il s'agit, donc le débogueur. est plus pratique. Mais vous devez comprendre que le type d'erreur est SyntaxError et le message d'erreur qui suit, afin qu'il soit plus facile de corriger l'erreur.

TypeError
n'est pas de type valide. Ce type d'erreur signifie que le type donné n'est pas le type requis, ce qui entraîne une inopérabilité et une erreur de type sera générée.
La variable ou le paramètre n'est pas du type attendu,
La variable ou le paramètre n'est pas du type attendu
Par exemple, l'opérateur nouveau doit être suivi d'une fonction, et celui donné n'est pas une fonction, une erreur de type sera générée

let fn = 'hello';
new fn;
Copier après la connexion

Lance une erreur :
Uncaught TypeError : fn n'est pas un constructeur
Appel d'une méthode qui ne le fait pas exister sur un objet

let obj = {};
obj.fn()
Copier après la connexion

Lance une erreur :
Uncaught TypeError : obj.fn n'est pas une fonction
Bien sûr, vous pouvez également forcer les paramètres entrants à être des types spécifiés lorsque encapsulant la fonction, sinon une erreur de type sera générée.

function flatten(arr){
if( !Array.isArray(arr) )
{
       throw new TypeError('传入参数不是数组')   
}    
}
Copier après la connexion
flatten('test');
Copier après la connexion

Lorsque le paramètre entrant n'est pas un tableau, une erreur de type personnalisé est générée :
Uncaught TypeError : Le paramètre entrant n'est pas un tableau

ReferenceError
Référence invalide.

Référence à une variable qui n'existe pas

console.log(a);
Copier après la connexion

Lance une erreur
Uncaught ReferenceError : a n'est pas défini
Attribue une variable à une variable qui ne peut pas être Données assignées
Cette erreur est souvent commise lors d'un jugement dans l'instruction if après avoir appelé une méthode. L'opérateur de comparaison == est écrit comme l'opérateur d'affectation =. Par exemple, pour juger si le premier caractère d'une chaîne est le. caractère spécifié :

let str = 'hello';
if( str.charAt(0) = 'h' ){
   console.log('第一个字符为h');
   }
Copier après la connexion

Lance une erreur :
Uncaught ReferenceError : côté gauche invalide dans l'affectation
RangeError
La valeur est en dehors de la plage valide. Dans certaines méthodes, la valeur transmise doit se situer dans une certaine plage, sinon une erreur hors plage sera générée.
La longueur transmise lors de la création du tableau est inférieure à 0

let arr = new Array(-1)
Copier après la connexion

Lance une erreur :
Uncaught RangeError : longueur de tableau non valide
La méthode de répétition répète la chaîne spécifiée le nombre de fois où il est répété est inférieur à 0

let str = 'hello';
str.repeat(-1)
Copier après la connexion

Erreur de lancement :
Uncaught RangeError : valeur de comptage non valide

URIError
Erreur dans traitement du codage URI. Les paramètres de la fonction sont incorrects, principalement les six fonctions encodeURI(), decodeURI(), encodeURIComponent(), decodeURIComponent(), escape() et unescape().
Par exemple :

decodeURIComponent('%');
decodeURI('%2')
Copier après la connexion

Lance une erreur :
Uncaught URIerror : URI mal formé

Type d'erreur personnalisé
Parfois, vous souhaitez personnaliser Pour le type d'erreur, vous devez personnaliser un constructeur, puis laisser le prototype hériter de Error.prototype.

function MyErrorType(message){
this.message = message || '错误';
this.name = 'MyErrorType';
this.stack = (new Error()).stack;  // 错误位置和调用栈
}
MyErrorType.prototype = Object.create(Error.prototype);
MyErrorType.prototype.constructor = MyErrorType;
throw new MyErrorType('自定义错误类型抛出错误')
Copier après la connexion

关于调用的错误栈信息
提供的错误的跟踪功能,以什么样的调用顺序,在哪个文件的哪一行捕获到这个错误。
例如以下调用:

 function trace() {
  try {
        throw new Error('myError');
  }
  catch(e) {
        console.log(e.stack);
  }
  }
function b() {
trace();
}
function a() {
b(3, 4, '\n\n', undefined, {});
}
a('first call, firstarg');
Copier après la connexion

错误信息为:
Error: myError
  at trace (:3:14)
  at b (:10:6)
  at a (:13:6)
  at :15:4
以上为抛错的构造函数的总结,如有误之处欢迎扶正。

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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 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 utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

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 utiliser insertBefore en javascript Comment utiliser insertBefore en javascript Nov 24, 2023 am 11:56 AM

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace JavaScript et WebSocket : créer un système de traitement d'images en temps réel efficace Dec 17, 2023 am 08:41 AM

JavaScript est un langage de programmation largement utilisé dans le développement Web, tandis que WebSocket est un protocole réseau utilisé pour la communication en temps réel. En combinant les puissantes fonctions des deux, nous pouvons créer un système efficace de traitement d’images en temps réel. Cet article présentera comment implémenter ce système à l'aide de JavaScript et WebSocket, et fournira des exemples de code spécifiques. Tout d’abord, nous devons clarifier les exigences et les objectifs du système de traitement d’images en temps réel. Supposons que nous disposions d'un appareil photo capable de collecter des données d'image en temps réel.

See all articles