Quelle méthode est un moyen efficace de gérer les promesses rejetées dans la syntaxe async/await de Node.js ?

Gestion efficace des promesses rejetées dans la syntaxe async/await de Node.js

  • Bloc try/catch
  • gestionnaire unhandledRejection

L'un des défis auxquels les développeurs Node.js sont souvent confrontés est la gestion des erreurs asynchrones. L'utilisation de la syntaxe async/await dans les promesses JS offre une approche structurée pour gérer ces problèmes.

Bloc Try/Catch

Un moyen efficace de gérer les promesses rejetées est l'utilisation d'un bloc try / catch. Ce code tente d'exécuter le bloc de code dans le "try". Si une erreur est détectée, le code dans le bloc "catch" est exécuté pour gérer l'erreur.

Voici un exemple simple d'une promesse avec async/await et un bloc try/catch,

async function getJSONAsync() {

    try {
        // Cette asynchrone renvoie une promesse
        let response = await new Promise((resolve, reject) => {
            // Simulons une erreur
            throw new Error("Erreur !");
        });
    } catch (error) {
        console.log(error); // Ceci affiche : Error: Erreur !
    }
} 

getJSONAsync();

Dans cet exemple, lorsque la promesse est rejetée, le contrôle passe au bloc catch, évitant ainsi toute interruption inattendue du programme.

Gestionnaire 'unhandledRejection'

Une autre méthode pour gérer les promesses non satisfaites consiste à utiliser l'événement 'unhandledRejection' dans le processus global. Cet événement est déclenché chaque fois qu'une promesse est rejetée et n'a pas de bloc catch pour gérer l'erreur.

Voici comment l'utiliser :

process.on('unhandledRejection', (reason, promise) => {
    console.log('Non traitée: ', promise, ' raison: ', reason);
    // Application de gestion des erreurs spécifiques ou fermeture du processus
});

Cela vous donne une couche de sécurité pour capturer toutes les promesses rejetées que vous avez peut-être manquées dans votre code.

Notez que la combinaison de ces deux méthodes est la meilleure pratique pour gérer les erreurs dans un environnement asynchrone. Le bloc try / catch couvre les erreurs spécifiques que vous pouvez anticiper à l'avance, tandis que le gestionnaire 'unhandledRejection' attrape toutes les autres promesses rejetées non prises en compte.

Related Questions

Trouvez-vous cela utile?