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.
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.
Si vous souhaitez détecter les erreurs uniquement à partir de la promesse, tenez compte des éléments suivants options :
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 }
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; } }
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!