非同期JavaScriptでのエラー処理には、同期コードとは異なる微妙なアプローチが必要です。 try...catch
block Handles同期エラー。しかし、非同期操作は、多くの場合、約束や非同期/待ち声を使用して、別の戦略が必要です。エラー処理のために.then()
および.catch()
メソッドを使用することを約束します。非同期操作が失敗した場合、それは約束を拒否し、 .catch()
ブロックはエラーを処理します。 try...catch
Blockは、約束が解決または拒否される前に発生するエラーのみをキャッチします。
説明しましょう:
<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>
この例では、 asyncOperation
関数が約束を返します。乱数が0.5未満の場合、約束は「成功!」で解決します。それ以外の場合、エラーオブジェクトで拒否します。 .catch()
ブロックは、拒否された約束を特別に処理し、未処理の拒否エラーを防ぎます。 try...catch
asyncOperation()
コールの周りに配置されたキャッチブロックは、 try
ブロックの実行後にエラーがスローされているため、エラーがキャッチされません。
try...catch
と約束は基本的で堅牢な非同期エラー処理にはさらなるベストプラクティスが必要です。
.catch()
ブロックをブロックする代わりに、中央のエラー処理メカニズムを検討してください。これには、カスタムエラーハンドラー関数またはミドルウェアレイヤー(ReactやExpressなどのフレームワークを使用する場合)が含まれる場合があります。これにより、保守性が向上し、一貫したエラーレポートが可能になります。Error
オブジェクトをキャッチしないでください。アプリケーション内の特定のエラータイプ( NetworkError
、 AuthenticationError
、 DatabaseError
)を表すカスタムエラークラスを作成します。これにより、よりターゲットを絞ったエラー処理とデバッグが可能になります。ErrorBoundary
など)を活用してください。はい、 async/await
効果的に使用できますtry...catch
、非同期JavaScript関数のエラーを処理します。 async/await
非同期コードを見て、同期コードのようにもう少し動作させ、エラー処理をより直感的にします。 try...catch
Blockは、 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>
この例では、 try
ブロックはasyncOperation
実行を試みます。 asyncOperation
が拒否された場合、 catch
ブロックはエラーを処理します。このアプローチは.then()
および.catch()
を使用するよりもクリーンで読みやすいです。
非同期コードのデバッグは、エラーがすぐに発生しないか、予測可能なシーケンスで発生しない可能性があるため、困難な場合があります。ここにいくつかの効果的なデバッグ戦略があります:
console.log()
ステートメントを戦略的に配置して、実行の流れと変数の値を追跡します。非同期操作の前後に関連するデータを記録します。以上がTry/Catch and Promiseの拒否を使用して、非同期JavaScriptコードのエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。