【JavaScript ECMAScript】Promise::Promise.prototype.catchインスタンスメソッドの使い方
Promise.prototype.catch()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Promise.prototype.catch()メソッドは、Promiseオブジェクトが拒否(rejection)された際に実行されるエラーハンドリング処理を登録するメソッドです。Promiseは、非同期処理の最終的な完了または失敗を表すオブジェクトであり、その結果を後続の処理に伝達します。
このcatch()メソッドは、Promiseチェインにおいて、非同期処理中に発生したエラーを捕捉するために利用されます。Promiseが成功(resolve)した場合にはcatch()内のコールバック関数は実行されず、拒否(reject)された場合にのみ、そのエラー情報が引数としてコールバック関数に渡され、指定されたエラー処理が実行されます。
機能的には、Promise.prototype.then()メソッドの第二引数にエラーハンドリング関数を渡すことと等価ですが、catch()を使用することでエラー処理の意図が明確になり、コードの可読性が向上します。Promiseチェインの途中でエラーが発生した場合、そのエラーは次に現れるcatch()メソッドに伝播し、そこで処理されるか、または他にcatch()がなければ未処理のままとなります。
catch()メソッド自体も新しいPromiseオブジェクトを返します。これにより、エラー処理後にさらに別のPromiseチェインを続けることが可能です。非同期処理における堅牢なエラー処理を実装するために、Promiseと共に広く利用される重要なメソッドです。
構文(syntax)
1const myPromise = new Promise((resolve, reject) => { 2 // Promiseが拒否される(エラーが発生する)シナリオをシミュレート 3 reject(new Error("データの取得に失敗しました")); 4}); 5 6myPromise.catch(error => { 7 // Promiseが拒否された場合に実行される関数 8 console.error("エラーを捕捉しました:", error.message); 9});
引数(parameters)
onRejected
- onRejected: Promiseがrejectされた場合に実行されるコールバック関数。エラーオブジェクトが引数として渡されます。
戻り値(return)
Promise
Promise.prototype.catch() は、Promise が拒否された(rejected)場合に実行されるコールバック関数を登録します。このメソッドは、常に新しい Promise インスタンスを返します。この新しい Promise は、登録されたコールバック関数が正常に実行された場合は解決(fulfilled)され、コールバック関数内でエラーが発生した場合は拒否(rejected)されます。