You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/10-error-handling/1-try-catch/article.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,11 @@ Peu importe notre niveau en programmation, nos scripts comportent parfois des er
4
4
5
5
Généralement, un script "meurt" (s'arrête immédiatement) en cas d'erreur, en l'affichant dans la console.
6
6
7
-
Mais il existe une construction de syntaxe `try...catch` qui permet au script "d'attraper" les erreurs et, au lieu de mourir en cas de problème, de faire quelque chose de plus raisonnable.
7
+
Mais il existe une structure de syntaxe `try...catch` qui permet au script "d'attraper" les erreurs et, au lieu de mourir en cas de problème, de faire quelque chose de plus raisonnable.
8
8
9
9
## La syntaxe "try...catch"
10
10
11
-
La construction`try...catch` a deux blocs principaux : `try`, puis `catch` :
11
+
La structure`try...catch` a deux blocs principaux : `try`, puis `catch` :
12
12
13
13
```js
14
14
try {
@@ -103,7 +103,7 @@ try {
103
103
}
104
104
```
105
105
106
-
C’est parce que la fonction elle-même est exécutée ultérieurement, lorsque le moteur a déjà quitté la construction`try...catch`.
106
+
C’est parce que la fonction elle-même est exécutée ultérieurement, lorsque le moteur a déjà quitté la structure`try...catch`.
107
107
108
108
Pour capturer une exception dans une fonction planifiée, `try...catch` doit être à l'intérieur de cette fonction :
109
109
```js run
@@ -561,7 +561,7 @@ alert( func() ); // en premier l'alert du `finally`, puis celle-ci (`1`)
561
561
562
562
````smart header="`try...finally`"
563
563
564
-
La construction`try...finally`, sans la clause `catch`, est également utile. Nous l'appliquons lorsque nous ne voulons pas gérer les erreurs ici (les laisser passer), mais nous voulons être sûrs que les processus que nous avons démarrés sont finalisés.
564
+
La structure`try...finally`, sans la clause `catch`, est également utile. Nous l'appliquons lorsque nous ne voulons pas gérer les erreurs ici (les laisser passer), mais nous voulons être sûrs que les processus que nous avons démarrés sont finalisés.
565
565
566
566
```js
567
567
functionfunc() {
@@ -576,19 +576,19 @@ function func() {
576
576
Dans le code ci-dessus, une erreur à l'intérieur de `try` ressort toujours, car il n'y a pas de `catch`. Mais `finally` fonctionne avant que le flux d’exécution ne quitte la fonction.
577
577
````
578
578
579
-
## Catch globale
579
+
## Catch global
580
580
581
581
```warn header="Spécifique à l'environnement"
582
582
Les informations de cette section ne font pas partie du code JavaScript principal.
583
583
```
584
584
585
-
Imaginons que nous ayons une erreur fatale en dehors de `try...catch` et que le script soit mort. Comme une erreur de programmation ou autre chose terrible.
585
+
Imaginons que nous ayons une erreur fatale en dehors de `try...catch` et que le script soit mort. Comme une erreur de programmation ou une autre chose terrible.
586
586
587
587
Y a-t-il un moyen de réagir à de tels événements ? Nous pouvons vouloir enregistrer l'erreur, montrer quelque chose à l'utilisateur (normalement, ils ne voient pas les messages d'erreur), etc.
588
588
589
589
Il n'y en a pas dans la spécification, mais les environnements le fournissent généralement, car c'est vraiment utile. Par exemple, Node.js a [`process.on("uncaughtException")`](https://nodejs.org/api/process.html#process_event_uncaughtexception) pour ça. Et dans le navigateur, nous pouvons attribuer une fonction à la propriété [window.onerror](https://developer.mozilla.org/fr/docs/Web/API/GlobalEventHandlers/onerror), qui fonctionnera en cas d'erreur non interceptée.
badFunc(); // Whoops, quelque chose s'est mal passé!
622
+
badFunc(); // Whoops, quelque chose s'est mal passé!
623
623
}
624
624
625
625
readData();
@@ -628,9 +628,9 @@ Par exemple:
628
628
629
629
Le rôle du gestionnaire global `window.onerror` est généralement de ne pas récupérer l'exécution du script - c'est probablement impossible en cas d'erreur de programmation, mais d'envoyer le message d'erreur aux développeurs.
630
630
631
-
Il existe également des services Web fournissant un journal des erreurs pour de tels cas, comme<https://errorception.com> ou <https://www.muscula.com>.
631
+
Il existe également des services Web fournissant un journal des erreurs pour de tels cas, comme<https://errorception.com> ou <https://www.muscula.com>.
632
632
633
-
Ils fonctionnent comme ceci:
633
+
Ils fonctionnent comme ceci:
634
634
635
635
1. Nous nous inscrivons au service et obtenons un morceau de JS (ou une URL de script) à insérer sur des pages.
636
636
2. Ce script JS définit une fonction `window.onerror` personnalisée.
@@ -639,9 +639,9 @@ Ils fonctionnent comme ceci:
639
639
640
640
## Résumé
641
641
642
-
La construction `try...catch` permet de gérer les erreurs d'exécution. Cela permet littéralement "d'essayer" (`try`) d'exécuter le code et "d’attraper" (`catch`) les erreurs qui peuvent s'y produire.
642
+
La structure `try...catch` permet de gérer les erreurs d'exécution. Cela permet littéralement "d'essayer" (`try`) d'exécuter le code et "d’attraper" (`catch`) les erreurs qui peuvent s'y produire.
643
643
644
-
La syntaxe est la suivante:
644
+
La syntaxe est la suivante:
645
645
646
646
```js
647
647
try {
@@ -654,18 +654,18 @@ try {
654
654
}
655
655
```
656
656
657
-
Il peut ne pas y avoir de section `catch` ou de `finally`, donc les constructions plus courtes `try...catch` et `try...finally` sont également valides.
657
+
Il peut ne pas y avoir de section `catch` ou de `finally`, donc les structures plus courtes `try...catch` et `try...finally` sont également valides.
658
658
659
-
Les objets d'erreur ont les propriétés suivantes:
659
+
Les objets d'erreur ont les propriétés suivantes:
660
660
661
661
- `message` - le message d'erreur.
662
662
- `name` - la chaîne avec le nom d'erreur (nom du constructeur de l'erreur).
663
663
- `stack` (non standard, mais bien supporté) - la pile d'exécution au moment de la création de l'erreur.
664
664
665
-
Si un objet d'erreur n'est pas nécessaire, nous pouvons l'omettre en utilisant `catch {` au lieu de `catch(err) {`.
665
+
Si un objet d'erreur n'est pas nécessaire, nous pouvons l'omettre en utilisant `catch {...}` au lieu de `catch(err) {...}`.
666
666
667
667
Nous pouvons également générer nos propres erreurs en utilisant l'opérateur `throw`. Techniquement, l'argument de `throw` peut être n'importe quoi, mais il s'agit généralement d'un objet d'erreur héritant de la classe `Error` intégrée. Plus d'informations sur l'extension des erreurs dans le chapitre suivant.
668
668
669
-
La technique de *propagation* est un modèle très important de gestion des erreurs: un bloc `catch` s'attend généralement à savoir comment gérer le type d'erreur particulier et sait comment le gérer. Il doit donc "propager" les erreurs qu'il ne connaît pas.
669
+
La technique de *propagation* est un modèle très important de gestion des erreurs: un bloc `catch` s'attend généralement à un type d'erreur particulier et sait comment le gérer, il doit donc "propager" (renvoyer) les erreurs qu'il ne connaît pas.
670
670
671
-
Même si nous n'avons pas `try...catch`, la plupart des environnements permettent de configurer un gestionnaire d'erreurs "globale" pour intercepter les erreurs qui "tombent". Dans le navigateur, c'est `window.onerror`.
671
+
Même si nous n'avons pas `try...catch`, la plupart des environnements permettent de configurer un gestionnaire d'erreurs "globales" pour intercepter les erreurs qui "tombent". Dans le navigateur, c'est `window.onerror`.
0 commit comments