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

Comment utiliser correctement Try...Catch avec Async/Await en JavaScript ?

DDD
DDDoriginal
2024-12-29 04:37:10421parcourir

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

Corriger Try...Catch Syntaxe à l'aide d'Async/Await

Dans la fonctionnalité Async/Await de JavaScript, il est courant de déclarer des variables qui attendent une expression en dehors de l'essai ...catch block pour assurer leur accessibilité plus tard. Cependant, il est recommandé de minimiser la logique métier au sein du corps d'essai afin de gérer efficacement les exceptions.

Bonnes pratiques

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
}

Cette approche garantit que toutes les exceptions, y compris celles issues de la logique métier, sont capturées.

Options alternatives pour gérer les erreurs de promesse

Si vous souhaitez détecter les erreurs uniquement à partir de la promesse, tenez compte des éléments suivants options :

1. Déclarer la variable à l'extérieur et gérer les erreurs

Déclarer la variable en dehors du bloc et gérer les erreurs via le branchement :

let createdUser;
try {
  createdUser = await this.User.create(userInfo);
} catch (error) {
  console.error(error); // from creation
}
if (createdUser) {
  // User was created successfully
  console.log(createdUser);
  // Business logic goes here
}

2. Tester le type d'exception capturée

Vérifiez le type de l'exception capturée 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;
  }
}

3. Utiliser les rappels .then()

Une alternative à try...catch qui offre simplicité et exactitude consiste à utiliser les rappels .then() :

await this.User.create(userInfo).then(
  (createdUser) => {
    // User was created successfully
    console.log(createdUser);
    // Business logic goes here
  },
  (error) => {
    console.error(error); // from creation
  }
);

Considérez les avantages et les inconvénients de chaque option en fonction de vos besoins spécifiques.

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