Les Promises offrent une méthode structurée pour gérer les erreurs et les exceptions dans le code asynchrone. Voici quelques méthodes pour gérer les erreurs avec les Promises:
1. `catch()`: Cette méthode gère les erreurs lancées par les Promises. Si une erreur se produit dans une promise, le contrôle passe à la méthode `catch()` la plus proche. Par exemple :
```
const promise = new Promise((resolve, reject) => {
throw new Error(“Erreur !”);
});
promise.catch(error => console.log(error)); // “Erreur !“
```
1. `then(successCallback, errorCallback)`: Un autre moyen de gérer les erreurs est d’utiliser deux arguments dans `then()`. Le premier argument est la fonction de callback pour le succès et le deuxième est pour l’échec :
```
const promise = new Promise((resolve, reject) => {
throw new Error(“Erreur !”);
});
promise.then(() => console.log(“Succès !”), error => console.log(error)); // “Erreur !“
```
1. `Promise.all()`: Si plusieurs promises sont regroupées à l’aide de `Promise.all()`, et si une des promises est rejetée, `Promise.all()` est immédiatement rejetée avec la raison de cette promise. Vous pouvez gérer cette erreur en plaçant un bloc `catch()` après `Promise.all()` :
```
const promise1 = Promise.resolve(“Succès !”);
const promise2 = Promise.reject(new Error(“Erreur !”));
Promise.all([promise1, promise2]).catch(error => console.log(error)); // “Erreur !“
```
1. `UnhandledPromiseRejectionWarning`: Si aucune méthode `catch()` n’est présente pour gérer l’erreur, Node.js génère un avertissement `UnhandledPromiseRejectionWarning`.
Il est recommandé d’avoir toujours une méthode `catch()` à la fin de votre chaîne de promesses pour gérer toute erreur qui pourrait survenir. C’est une bonne pratique et peut vous aider à éviter des erreurs difficiles à déboguer.