Maison >interface Web >js tutoriel >Comment gérer les erreurs dans le code JavaScript asynchrone en utilisant le rejet Try / Catch et promettre?
La gestion des erreurs dans JavaScript asynchrone nécessite une approche nuancée, différente du code synchrone. Le bloc try...catch
les gère les erreurs synchrones, mais les opérations asynchrones, utilisant souvent des promesses ou asynchrones / attend, nécessitent une stratégie différente. Promis Utilisez .then()
et .catch()
Méthodes de gestion des erreurs. Si une opération asynchrone échoue, elle rejette la promesse et le bloc .catch()
gère l'erreur. Le bloc try...catch
Block ne capture que les erreurs qui se produisent avant que la promesse ne résout ou rejette.
Illustrons:
<code class="javascript">function asyncOperation() { return new Promise((resolve, reject) => { // Simulate an asynchronous operation that might fail setTimeout(() => { const randomNumber = Math.random(); if (randomNumber console.log(result)) .catch(error => console.error("Caught an error:", error));</code>
Dans cet exemple, la fonction asyncOperation
renvoie une promesse. Si le nombre aléatoire est inférieur à 0,5, la promesse se résout avec "Success!"; Sinon, il rejette avec un objet d'erreur. Le bloc .catch()
gère spécifiquement la promesse rejetée, empêchant les erreurs de rejet non gérées. Un bloc try...catch
placé autour de l'appel asyncOperation()
n'attraperait pas l'erreur car l'erreur est lancée après l'exécution du bloc try
.
Bien que try...catch
and Promises soit fondamental, une gestion des erreurs asynchrones robuste nécessite d'autres meilleures pratiques:
.catch()
tout au long de votre code, envisagez un mécanisme central de gestion des erreurs. Cela pourrait impliquer une fonction de gestionnaire d'erreurs personnalisée ou une couche middleware (si vous utilisez un framework comme React ou Express) qui intercepte et enregistre toutes les erreurs non gérées. Cela améliore la maintenabilité et permet des rapports d'erreurs cohérents.Error
génériques. Créez des classes d'erreur personnalisées pour représenter des types d'erreur spécifiques dans votre application (par exemple, NetworkError
, AuthenticationError
, DatabaseError
). Cela permet une gestion des erreurs et un débogage plus ciblés.ErrorBoundary
) pour gérer gracieusement les erreurs dans les composants sans écraser toute l'application. Oui, vous pouvez utiliser efficacement async/await
avec try...catch
Blocks pour gérer les erreurs dans les fonctions JavaScript asynchrones. async/await
rend le code asynchrone et se comporte un peu plus de code synchrone, ce qui rend la gestion des erreurs plus intuitive. Le bloc try...catch
attrapera toutes les erreurs lancées dans la fonction async
.
<code class="javascript">async function asyncOperationWithAwait() { try { const result = await asyncOperation(); // asyncOperation from previous example console.log(result); } catch (error) { console.error("Caught an error using async/await:", error); } } asyncOperationWithAwait();</code>
Dans cet exemple, le bloc try
tente d'exécuter l' asyncOperation
. Si asyncOperation
rejette, le bloc catch
gérera l'erreur. Cette approche est plus propre et plus facile à lire que d'utiliser .then()
et .catch()
.
Le débogage du code asynchrone peut être difficile car les erreurs peuvent ne pas se produire immédiatement ou dans une séquence prévisible. Voici quelques stratégies de débogage efficaces:
console.log()
dans tout votre code asynchrone pour suivre le flux d'exécution et les valeurs des variables. Log les données pertinentes avant et après les opérations asynchrones.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!