⊗jsSpACEx 158 of 294 menu

JavaScriptにおける非同期コールバックの例外

make に渡されたパラメータが 配列に存在しない要素のインデックスである場合を 例外とします。ご存知の通り、非同期関数内で発生した例外は try-catch でキャッチすることはできません。 今回の場合、make またはコールバック内部で発生した例外は キャッチされないでしょう:

try { make(10, function(res) { console.log(res); }); } catch(err) { // キャッチされない }

コールバックのアプローチでは、例外は次のように扱われます: コールバックの第一引数に結果を、第二引数にエラーを渡します。 この場合、エラー処理は次のようになります:

make(10, function(res, err) { if (!err) { console.log(res); // エラーなし、結果を表示 } else { console.log(err); // エラー発生、エラーテキストを表示 } });

説明に従って、make 関数のコードを 書き換えてみましょう:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // エラーテキスト } else { err = null; // エラーなし } callback(arr[num], err); }, 3000); }
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否