Gestion des exceptions asynchrones avec Bluebird Promises
Lorsque vous travaillez avec des routines asynchrones, la gestion des exceptions peut être difficile à gérer. Les promesses, une fonctionnalité clé de Bluebird.js, fournissent un moyen structuré de gérer les exceptions asynchrones.
Le défi
Dans votre exemple de code, un setTimeout est utilisé dans un rappel sans promesse. Lorsqu'une erreur est générée dans ce rappel, le catch de Bluebird ne sera pas déclenché, provoquant le crash du programme.
Structure de promesse de Bluebird
Les promesses interceptent les exceptions lancées dans leur rappel fonctions (constructeur then/catch/Promise). Pour gérer les exceptions des rappels asynchrones, il est crucial de les envelopper dans une promesse.
Gestion élégante des exceptions
Dans votre scénario, vous pouvez inclure le rappel setTimeout dans une promesse . Le bloc catch détectera alors l'erreur :
<code class="javascript">function getPromise() { return new Promise(function(resolve, reject) { setTimeout(resolve, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
Le rejet est la clé
Ne lancez jamais d'erreurs directement dans les rappels sans promesse. Au lieu de cela, rejetez la promesse environnante. Si nécessaire, utilisez try-catch pour garantir une gestion appropriée.
<code class="javascript">function getPromise() { return new Promise(function(resolve, reject) { try { setTimeout(resolve, 500); } catch (err) { reject(err); } }); }</code>
En adhérant à ces principes, vous pouvez garantir une gestion gracieuse des exceptions dans Node.js et dans le navigateur, même pour les rappels asynchrones malveillants.
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!