Skip to content

Commit 141c030

Browse files
committed
Translation of useonlythebuiltinerror.md
1 parent 2ab97b2 commit 141c030

File tree

1 file changed

+35
-35
lines changed

1 file changed

+35
-35
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,71 @@
1-
# Use only the built-in Error object
1+
# Utilisez uniquement l'objet intégré Error
22

3-
### One Paragraph Explainer
3+
### Un paragraphe d'explication
44

5-
The permissive nature of JavaScript along with its variety of code-flow options (e.g. EventEmitter, Callbacks, Promises, etc) pushes to great variance in how developers raise errors – some use strings, other define their own custom types. Using Node.js built-in Error object helps to keep uniformity within your code and with 3rd party libraries, it also preserves significant information like the StackTrace. When raising the exception, it’s usually a good practice to fill it with additional contextual properties like the error name and the associated HTTP error code. To achieve this uniformity and practices, consider extending the Error object with additional properties, see code example below
5+
La nature permissive de JavaScript ainsi que sa variété d'options de flux de code (par exemple, EventEmitter, fonction de rappel, promesses, etc.) peut faire varier considérablement la façon dont les développeurs génèrent des erreurs - certains utilisent des chaînes, d'autres définissent leurs propres types personnalisés. L'utilisation de l'objet Error intégré de Node.js aide à maintenir l'uniformité dans votre code et avec les bibliothèques tierces, il préserve également des informations importantes comme la StackTrace. Lors de la levée de l'exception, il est généralement recommandé de la remplir avec des propriétés contextuelles supplémentaires telles que le nom de l'erreur et le code d'erreur HTTP associé. Pour atteindre cette uniformité et ces pratiques, envisagez d'étendre l'objet Error avec des propriétés supplémentaires, voir l'exemple de code ci-dessous.
66

7-
### Code Example – doing it right
7+
### Exemple de code - la bonne méthode
88

99
```javascript
10-
// throwing an Error from typical function, whether sync or async
10+
// lève une Error depuis une fonction typique, qu'elle soit synchrone ou asynchrone
1111
if(!productToAdd)
12-
throw new Error('How can I add new product when no value provided?');
12+
throw new Error('Comment puis-je ajouter un nouveau produit lorsqu\'aucune valeur n\'est fournie ?');
1313

14-
// 'throwing' an Error from EventEmitter
14+
// 'lève' une Error depuis EventEmitter
1515
const myEmitter = new MyEmitter();
16-
myEmitter.emit('error', new Error('whoops!'));
16+
myEmitter.emit('error', new Error('Oups !'));
1717

18-
// 'throwing' an Error from a Promise
18+
// 'lève' une Error depuis une promesse
1919
const addProduct = async (productToAdd) => {
2020
try {
2121
const existingProduct = await DAL.getProduct(productToAdd.id);
2222
if (existingProduct !== null) {
23-
throw new Error('Product already exists!');
23+
throw new Error('Le produit existe déjà !');
2424
}
2525
} catch (err) {
2626
// ...
2727
}
2828
}
2929
```
3030

31-
### Code example – Anti Pattern
31+
### Exemple de code - la mauvaise méthode
3232

3333
```javascript
34-
// throwing a string lacks any stack trace information and other important data properties
34+
// lève une chaîne qui ne contient aucune information de trace de pile et autres propriétés de données importantes
3535
if(!productToAdd)
36-
throw ('How can I add new product when no value provided?');
36+
throw ('Comment puis-je ajouter un nouveau produit lorsqu\'aucune valeur n\'est fournie ?');
3737
```
3838

39-
### Code example – doing it even better
39+
### Exemple de code - une méthode encore meilleure
4040

4141
<details>
4242
<summary><strong>Javascript</strong></summary>
4343

4444
```javascript
45-
// centralized error object that derives from Node’s Error
45+
// objet d'erreur centralisé qui dérive de Error de Node
4646
function AppError(name, httpCode, description, isOperational) {
4747
Error.call(this);
4848
Error.captureStackTrace(this);
4949
this.name = name;
50-
//...other properties assigned here
50+
//...d'autres propriétés attribuées ici
5151
};
5252

5353
AppError.prototype = Object.create(Error.prototype);
5454
AppError.prototype.constructor = AppError;
5555

5656
module.exports.AppError = AppError;
5757

58-
// client throwing an exception
58+
// le client levant une exception
5959
if(user == null)
60-
throw new AppError(commonErrors.resourceNotFound, commonHTTPErrors.notFound, 'further explanation', true)
60+
throw new AppError(commonErrors.resourceNotFound, commonHTTPErrors.notFound, 'plus d\'explications', true)
6161
```
6262
</details>
6363

6464
<details>
6565
<summary><strong>Typescript</strong></summary>
6666

6767
```typescript
68-
// centralized error object that derives from Node’s Error
68+
// objet d'erreur centralisé qui dérive de Error de Node
6969
export class AppError extends Error {
7070
public readonly name: string;
7171
public readonly httpCode: HttpCode;
@@ -74,7 +74,7 @@ export class AppError extends Error {
7474
constructor(name: string, httpCode: HttpCode, description: string, isOperational: boolean) {
7575
super(description);
7676

77-
Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain
77+
Object.setPrototypeOf(this, new.target.prototype); // restaure la chaîne du prototype
7878

7979
this.name = name;
8080
this.httpCode = httpCode;
@@ -84,34 +84,34 @@ export class AppError extends Error {
8484
}
8585
}
8686

87-
// client throwing an exception
87+
// le client levant une exception
8888
if(user == null)
89-
throw new AppError(commonErrors.resourceNotFound, commonHTTPErrors.notFound, 'further explanation', true)
89+
throw new AppError(commonErrors.resourceNotFound, commonHTTPErrors.notFound, 'plus d\'explications', true)
9090
```
9191
</details>
9292

93-
*Explanation about the `Object.setPrototypeOf` in Typescript: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget*
93+
*Explication sur `Object.setPrototypeOf` en Typescript : https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget*
9494

95-
### Blog Quote: "I don’t see the value in having lots of different types"
95+
### Citation de blog : « Je ne vois pas l'intérêt d'avoir beaucoup de types d'objets d'erreur différents »
9696

97-
From the blog, Ben Nadel ranked 5 for the keywords “Node.js error object”
97+
Extrait du blog de Ben Nadel classé en 5ème position pour les mots clés “Node.js error object”
9898

99-
>”Personally, I don’t see the value in having lots of different types of error objects – JavaScript, as a language, doesn’t seem to cater to Constructor-based error-catching. As such, differentiating on an object property seems far easier than differentiating on a Constructor type…
99+
> Personnellement, je ne vois pas l'intérêt d'avoir beaucoup de types d'objets d'erreur différents - JavaScript, en tant que langage, ne semble pas répondre à la capture d'erreurs basée sur le constructeur. En tant que tel, la différenciation sur une propriété d'objet semble beaucoup plus facile que la différenciation sur un type de constructeur
100100
101-
### Blog Quote: "A string is not an error"
101+
### Citation de blog : « Une chaîne n'est pas une erreur »
102102

103-
From the blog, devthought.com ranked 6 for the keywords “Node.js error object”
103+
Extrait du blog de devthought.com classé en 6ème position pour les mots clés “Node.js error object”
104104

105-
> passing a string instead of an error results in reduced interoperability between modules. It breaks contracts with APIs that might be performing `instanceof` Error checks, or that want to know more about the error. Error objects, as we’ll see, have very interesting properties in modern JavaScript engines besides holding the message passed to the constructor
105+
> le passage d'une chaîne au lieu d'une erreur entraîne une interopérabilité réduite entre les modules. Il rompt les contrats avec les API qui pourraient effectuer des vérifications d'Error avec `instanceof`, ou qui veulent en savoir plus sur l'erreur. Les objets d'Error, comme nous le verrons, ont des propriétés très intéressantes dans les moteurs JavaScript modernes en plus de contenir le message transmis au constructeur
106106
107-
### Blog Quote: "Inheriting from Error doesn’t add too much value"
107+
### Citation de blog : « L'héritage d'Error n'ajoute pas trop de valeur »
108108

109-
From the blog machadogj
109+
Extrait du blog de machadogj
110110

111-
> One problem that I have with the Error class is that is not so simple to extend. Of course, you can inherit the class and create your own Error classes like HttpError, DbError, etc. However, that takes time and doesn’t add too much value unless you are doing something with types. Sometimes, you just want to add a message and keep the inner error, and sometimes you might want to extend the error with parameters, and such
111+
> Un problème que j'ai avec la classe Error est qu'il n'est pas si simple à étendre. Bien sûr, vous pouvez hériter de la classe et créer vos propres classes d'erreur comme HttpError, DbError, etc. Cependant, cela prend du temps et n'ajoute pas trop de valeur à moins que vous ne fassiez quelque chose avec des types. Parfois, vous voulez simplement ajouter un message et conserver l'erreur interne, et parfois vous voudrez peut-être étendre l'erreur avec des paramètres, etc.
112112
113-
### Blog Quote: "All JavaScript and System errors raised by Node.js inherit from Error"
113+
### Citation de blog : « Toutes les erreurs JavaScript et Système levées par Node.js héritent de Error »
114114

115-
From Node.js official documentation
115+
Extrait de la documentation officielle de Node.js
116116

117-
> All JavaScript and System errors raised by Node.js inherit from, or are instances of, the standard JavaScript Error class and are guaranteed to provide at least the properties available on that class. A generic JavaScript Error object that does not denote any specific circumstance of why the error occurred. Error objects capture a “stack trace” detailing the point in the code at which the Error was instantiated, and may provide a text description of the error. All errors generated by Node.js, including all System and JavaScript errors, will either be instances of or inherit from, the Error class
117+
> Toutes les erreurs JavaScript et Système levées par Node.js héritent de, ou sont des instances de, la classe Error du JavaScript standard et sont garantes de fournir au moins les propriétés disponibles sur cette classe. Un objet Error JavaScript générique n'indique aucune circonstance particulière expliquant pourquoi l'erreur s'est produite. Les objets d'erreur capturent une « trace de la pile » détaillant le point dans le code où l'erreur a été instanciée et peuvent fournir une description textuelle de l'erreur. Toutes les erreurs générées par Node.js, y compris toutes les erreurs système et JavaScript, seront des instances ou hériteront de la classe Error…

0 commit comments

Comments
 (0)