Maison >interface Web >js tutoriel >Comment gérer au mieux les erreurs dans Async/Await Try...Catch Blocks dans TypeScript ?

Comment gérer au mieux les erreurs dans Async/Await Try...Catch Blocks dans TypeScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 02:13:16963parcourir

How to Best Handle Errors in Async/Await Try...Catch Blocks in TypeScript?

Syntaxe correcte pour Try...Catch Blocks avec Async/Await

Lors de l'utilisation de la fonctionnalité pratique Async/Await dans TypeScript, un problème se pose concernant la déclaration des variables lorsqu'elles attendent une réponse. Traditionnellement, ils doivent être déclarés en dehors du bloc try...catch pour être utilisés plus tard, comme indiqué ci-dessous :

let createdUser;
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error);
}

console.log(createdUser);

Il a été suggéré qu'il est préférable d'éviter de placer la logique métier dans le bloc try . Cependant, utiliser l'approche recommandée nécessite de déclarer la variable attendue en dehors du bloc, ce qui peut s'avérer fastidieux.

Bonnes pratiques de gestion des erreurs

Il est en effet considéré comme une bonne pratique de évitez de placer plusieurs lignes de logique métier à l'intérieur du corps try pour garantir que toutes les exceptions découlant de la valeur sont capturées. Une approche plus complète est la suivante :

try {
    const createdUser = await this.User.create(userInfo);

    console.log(createdUser);
    // Business logic goes here
} catch (error) {
    console.error(error); // Exception from creation or business logic
}

Alternatives pour la gestion sélective des erreurs

Il existe trois alternatives si vous souhaitez détecter et gérer uniquement les erreurs provenant du promise:

  1. Déclarer la variable Outside et Branch: Cela implique un branchement selon qu'un une exception s'est produite, comme démontré ci-dessous :
let createdUser; // Or use 'var' inside the block
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error); // Exception from creation
}

if (createdUser) { // User was created successfully
    console.log(createdUser);
    // Business logic goes here
}
  1. Tester le type d'exception : Testez l'exception interceptée pour son type spécifique et gérez-la ou relancez-la en conséquence :
try {
    const createdUser = await this.User.create(userInfo);

    console.log(createdUser);
    // Business logic goes here
} catch (error) {
    if (error instanceof CreationError) {
        console.error(error); // Exception from creation
    } else {
        throw error;
    }
}
  1. Utilisez then avec les rappels : Cette approche utilise deux rappels au lieu de try/catch, fournissant la solution la plus simple et la plus recommandée :
await this.User.create(userInfo).then(createdUser => {
    // User was created successfully
    console.log(createdUser);
    // Business logic goes here
}, error => {
    console.error(error); // Exception from creation
});

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn