ES6 - Gestion des erreurs

Il existe trois types d'erreurs de programmation: les erreurs de syntaxe, les erreurs d'exécution et les erreurs logiques.

Erreurs de syntaxe

Erreurs de syntaxe, également appelées parsing errors, se produisent au moment de la compilation dans les langages de programmation traditionnels et au moment de l'interprétation en JavaScript. Lorsqu'une erreur de syntaxe se produit dans JavaScript, seul le code contenu dans le même thread que l'erreur de syntaxe est affecté et le reste du code des autres threads est exécuté en supposant que rien ne dépend du code contenant l'erreur.

Erreurs d'exécution

Erreurs d'exécution, également appelées exceptions, se produisent pendant l'exécution (après compilation / interprétation). Les exceptions affectent également le thread dans lequel elles se produisent, permettant à d'autres threads JavaScript de poursuivre l'exécution normale.

Erreurs logiques

Les erreurs logiques peuvent être le type d'erreurs le plus difficile à localiser. Ces erreurs ne sont pas le résultat d'une erreur de syntaxe ou d'exécution. Au lieu de cela, ils se produisent lorsque vous faites une erreur dans la logique qui anime votre script et que vous n'obtenez pas le résultat attendu.

Vous ne pouvez pas détecter ces erreurs, car cela dépend de vos besoins commerciaux, du type de logique que vous souhaitez mettre dans votre programme.

JavaScript lance des instances de l'objet Error lorsque des erreurs d'exécution se produisent. Le tableau suivant répertorie les types prédéfinis de l'objet Error.

Sr.Non Objet d'erreur et description
1

EvalError

Crée une instance représentant une erreur qui se produit concernant la fonction globale eval().

2

RangeError

Crée une instance représentant une erreur qui se produit lorsqu'une variable numérique ou un paramètre est en dehors de sa plage valide.

3

ReferenceError

Crée une instance représentant une erreur qui se produit lors du déréférencement d'une référence non valide.

4

SyntaxError

Crée une instance représentant une erreur de syntaxe qui se produit lors de l'analyse du code.

5

TypeError

Crée une instance représentant une erreur qui se produit lorsqu'une variable ou un paramètre n'est pas d'un type valide.

6

URIError

Crée une instance représentant une erreur qui se produit lorsque encodeURI() ou decodeURI() sont passés des paramètres invalides.

Lancer des exceptions

Une erreur (prédéfinie ou définie par l'utilisateur) peut être signalée à l'aide du throw statement. Plus tard, ces exceptions peuvent être capturées et vous pouvez prendre une action appropriée. Voici la syntaxe pour le même.

Syntaxe: lancer une exception générique

throw new Error([message]) 
OR 
throw([message])

Syntaxe: lancer une exception spécifique

throw new Error_name([message])

Gestion des exceptions

La gestion des exceptions est effectuée avec un try...catch statement. Lorsque le programme rencontre une exception, le programme se terminera de manière inamicale. Pour nous protéger contre cette erreur imprévue, nous pouvons envelopper notre code dans une instruction try ... catch.

Le bloc try doit être suivi par exactement un bloc catch ou un bloc finally (ou l'un des deux). Lorsqu'une exception se produit dans le bloc try, l'exception est placée dans e et le bloc catch est exécuté. Le bloc finalement optionnel s'exécute sans condition après try / catch

Voici la syntaxe pour le même.

try {  
   // Code to run  
   [break;]  
} catch ( e ) {  
   // Code to run if an exception occurs
   [break;]  
}[ finally {  
   // Code that is always executed regardless of  
   // an exception occurring  
}]

Exemple

var a = 100; 
var b = 0; 
try { 
   if (b == 0 ) { 
      throw(“Divide by zero error.”); 
   } else { 
      var c = a / b; 
   } 
} 
catch( e ) { 
   console.log("Error: " + e ); 
}

Production

La sortie suivante s'affiche lors de l'exécution réussie du code ci-dessus.

Error: Divide by zero error

Note - Remarque: vous pouvez déclencher une exception dans une fonction, puis capturer cette exception soit dans la même fonction, soit dans la fonction de l'appelant à l'aide d'un try...catch bloquer.

La méthode onerror ()

le onerrorLe gestionnaire d'événements a été la première fonctionnalité à faciliter la gestion des erreurs dans JavaScript. L'événement d'erreur est déclenché sur l'objet fenêtre chaque fois qu'une exception se produit sur la page.

Exemple

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function () {  
            document.write ("An error occurred.");  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

Production

La sortie suivante s'affiche lors de l'exécution réussie du code ci-dessus.

Le gestionnaire d'événements onerror fournit trois informations pour identifier la nature exacte de l'erreur -

  • Error message - Le même message que le navigateur afficherait pour l'erreur donnée.

  • URL - Le fichier dans lequel l'erreur s'est produite.

  • Line number - Le numéro de ligne dans l'URL donnée qui a provoqué l'erreur.

L'exemple suivant montre comment extraire ces informations.

Exemple

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function (msg, url, line) {  
            document.write ("Message : " + msg );  
            document.write ("url : " + url );  
            document.write ("Line number : " + line );  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

Erreurs personnalisées

JavaScript prend en charge le concept des erreurs personnalisées. L'exemple suivant explique la même chose.

Exemple 1: Erreur personnalisée avec message par défaut

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Error raised with default message'; 
} 
try { 
   throw new MyError(); 
} catch (e) {  
   console.log(e.name);      
   console.log(e.message);  // 'Default Message' 
}

La sortie suivante s'affiche lors de l'exécution réussie du code ci-dessus.

CustomError 
Error raised with default message

Exemple 2: Erreur personnalisée avec message d'erreur défini par l'utilisateur

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Default Error Message';  
} try { 
   throw new MyError('Printing Custom Error message'); 
} 
catch (e) { 
   console.log(e.name);      
   console.log(e.message);  
}

La sortie suivante s'affiche lors de l'exécution réussie du code ci-dessus.

CustomError 
Printing Custom Error message