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
+22-22Lines changed: 22 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -265,9 +265,9 @@ throw <error object>
265
265
266
266
Techniquement, on peut utiliser n'importe quoi comme objet d'erreur. Cela peut même être une primitive, comme un nombre ou une chaîne, mais il est préférable d’utiliser des objets, de préférence avec les propriétés `name` et `message` (pour rester quelque peu compatibles avec les erreurs intégrées).
267
267
268
-
JavaScript comporte de nombreux constructeurs intégrés pour les erreurs standard: `Error`, `SyntaxError`, `ReferenceError`, `TypeError` et autres. Nous pouvons également les utiliser pour créer des objets d'erreur.
268
+
JavaScript comporte de nombreux constructeurs intégrés pour les erreurs standards : `Error`, `SyntaxError`, `ReferenceError`, `TypeError` et autres. Nous pouvons également les utiliser pour créer des objets d'erreur.
269
269
270
-
Leur syntaxe est la suivante:
270
+
Leur syntaxe est la suivante:
271
271
272
272
```js
273
273
let error = new Error(message);
@@ -279,7 +279,7 @@ let error = new ReferenceError(message);
279
279
280
280
Pour les erreurs intégrées (pas pour les objets, mais pour les erreurs), la propriété `name` est exactement le nom du constructeur. Et `message` est tiré de l'argument.
281
281
282
-
Par exemple:
282
+
Par exemple:
283
283
284
284
```js run
285
285
let error = new Error("Things happen o_O");
@@ -288,7 +288,7 @@ alert(error.name); // Error
288
288
alert(error.message); // Things happen o_O
289
289
```
290
290
291
-
Voyons quel type d'erreur `JSON.parse` génère:
291
+
Voyons quel type d'erreur `JSON.parse` génère:
292
292
293
293
```js run
294
294
try {
@@ -303,9 +303,9 @@ try {
303
303
304
304
Comme on peut le constater, c’est une `SyntaxError`.
305
305
306
-
Et dans notre cas, l’absence de `name` est une erreur, car les utilisateurs doivent avoir un` name`.
306
+
Et dans notre cas, l’absence de `name` est une erreur, car les utilisateurs doivent avoir un `name`.
307
307
308
-
Alors utilisons throw:
308
+
Alors utilisons `throw` :
309
309
310
310
```js run
311
311
let json = '{ "age": 30 }'; // données incomplètes
@@ -327,9 +327,9 @@ try {
327
327
}
328
328
```
329
329
330
-
Dans la ligne `(*)`, l'instruction `throw` génère une `SyntaxError` avec le `message` donné, de la même manière que JavaScript le générerait lui-même. L'exécution de `try` s'arrête immédiatement et le flux de contrôle saute dans `catch`.
330
+
À la ligne `(*)`, l'instruction `throw` génère une `SyntaxError` avec le `message` donné, de la même manière que JavaScript le générerait lui-même. L'exécution de `try` s'arrête immédiatement et le flux de contrôle saute dans `catch`.
331
331
332
-
Maintenant, `catch` est devenu un emplacement unique pour toutes les erreurs de traitement: à la fois pour `JSON.parse` et d'autres cas.
332
+
Maintenant, `catch` est devenu un emplacement unique pour toutes les erreurs de traitement: à la fois pour `JSON.parse` et d'autres cas.
333
333
334
334
## Propager une exception
335
335
@@ -350,7 +350,7 @@ try {
350
350
}
351
351
```
352
352
353
-
Bien sûr, tout est possible! Les programmeurs font des erreurs. Même dans les utilitaires à code source ouvert utilisés par des millions de personnes pendant des décennies, on découvre soudainement un bug qui conduit à de terribles piratages.
353
+
Bien sûr, tout est possible! Les programmeurs font des erreurs. Même dans les utilitaires à code source ouvert utilisés par des millions de personnes pendant des décennies, on découvre soudainement un bug qui conduit à de terribles piratages.
354
354
355
355
Dans notre cas, `try...catch` est destiné à intercepter les erreurs "incorrect data". Mais par sa nature, `catch` obtient *toutes* les erreurs de `try`. Ici, une erreur inattendue se produit, mais le même message `"JSON Error"` est toujours affiché. C'est faux et rend également le code plus difficile à déboguer.
356
356
@@ -373,14 +373,14 @@ try {
373
373
*!*
374
374
if (err instanceof ReferenceError) {
375
375
*/!*
376
-
alert('ReferenceError'); // "ReferenceError" for accessing an undefined variable
376
+
alert('ReferenceError'); // "ReferenceError" pour avoir accédé à une variable non définie
377
377
}
378
378
}
379
379
```
380
380
381
381
Nous pouvons également obtenir le nom de la classe d'erreur à partir de la propriété `err.name`. Toutes les erreurs natives l'ont. Une autre option est de lire `err.constructor.name`.
382
382
383
-
Dans le code ci-dessous, nous utilisons la technique de "propagation" pour que `catch` ne traite que `SyntaxError`:
383
+
Dans le code ci-dessous, nous utilisons la technique de "propagation" pour que `catch` ne traite que `SyntaxError`:
384
384
385
385
```js run
386
386
let json = '{ "age": 30 }'; // données incomplètes
@@ -411,11 +411,11 @@ try {
411
411
}
412
412
```
413
413
414
-
L’erreur de l’instruction throw à la ligne `(*)` de l’intérieur du bloc `catch` "tombe" de `try...catch` et peut être interceptée par une construction externe `try...catch` (si elle existe), ou tue le script.
414
+
L’erreur de l’instruction `throw` à la ligne `(*)` de l’intérieur du bloc `catch` "sort" de `try...catch` et peut être soit capturée par une structure `try...catch` externe (si elle existe), soit elle arrête le script.
415
415
416
-
Ainsi, le bloc `catch` ne traite que les erreurs qu’il sait gérer et" ignore "toutes les autres.
416
+
Ainsi, le bloc `catch` ne traite que les erreurs qu’il sait gérer et "ignore" toutes les autres.
417
417
418
-
L'exemple ci-dessous montre comment de telles erreurs peuvent être interceptées par un niveau supplémentaire de `try...catch` :
418
+
L'exemple ci-dessous montre comment de telles erreurs peuvent être capturées par un niveau supplémentaire de `try...catch` :
419
419
420
420
```js run
421
421
function readData() {
@@ -430,7 +430,7 @@ function readData() {
430
430
// ...
431
431
if (!(err instanceof SyntaxError)) {
432
432
*!*
433
-
throw err; // propager (ne sachant pas comment gérer)
433
+
throw err; // propager l'erreur (ne sachant pas comment la gérer)
0 commit comments