Maison >interface Web >js tutoriel >Comment utiliser correctement Try...Catch avec Async/Await dans TypeScript ?

Comment utiliser correctement Try...Catch avec Async/Await dans TypeScript ?

DDD
DDDoriginal
2024-12-09 20:10:16494parcourir

How to Correctly Use Try...Catch with Async/Await in TypeScript?

Essayer correctement... Capturer la syntaxe à l'aide d'Async/Await

Lorsque vous exploitez la nature asynchrone d'Async/Await dans des langages comme TypeScript, il est essentiel d'utiliser la syntaxe correcte pour la gestion des erreurs. Une question courante se pose concernant le placement des variables à attendre dans les blocs try...catch.

Bonne pratique

Il est généralement considéré comme une meilleure pratique de placer la déclaration de variable à l'intérieur le bloc try et attribuez-y sa valeur. Cela permet de gérer les erreurs dans le cadre de la création de la variable et garantit qu'elle contient toujours une valeur valide :

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

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

Alternatives à la déclaration externe

Si vous souhaitez gérer les erreurs uniquement de la dans l'affectation de la promesse, vous avez trois alternatives :

  1. Test d'affectation de variable : Déclarez la variable à l'extérieur le bloc et vérifiez son affectation :
let createdUser;
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error); // from creation
}
if (createdUser) { // user was successfully created
    console.log(createdUser);
    // business logic goes here
}
  1. Test de type d'erreur : Testez l'exception interceptée pour son type et gérez-la en conséquence :
try {
    const createdUser = await this.User.create(userInfo);
    // user was successfully created
    console.log(createdUser);
    // business logic goes here
} catch (error) {
    if (error instanceof CreationError) {
        console.error(error); // from creation
    } else {
        throw error;
    }
}
  1. Rappels Then : Utilisez plutôt la méthode then avec deux rappels d'un bloc try/catch :
await this.User.create(userInfo).then(createdUser => {
    // user was successfully created
    console.log(createdUser);
    // business logic goes here
}, error => {
    console.error(error); // from creation
});

Chaque alternative a ses avantages et ses inconvénients, alors tenez compte des exigences spécifiques de votre application lorsque vous choisissez l'approche la plus appropriée.

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