⊗jsSpACEx 158 of 294 menu

ข้อยกเว้นใน callback แบบ asynchronous ใน JavaScript

สมมติว่าถ้าพารามิเตอร์ make ถูกส่ง หมายเลขของอิลิเมนต์อาร์เรย์ที่ไม่มีอยู่ - นี่เป็นสถานการณ์ผิดปกติ อย่างที่คุณทราบดีแล้ว ข้อยกเว้นที่เกิดขึ้นภายในฟังก์ชัน asynchronous ไม่สามารถถูกจับได้ด้วย try-catch ในกรณีของเรา ข้อยกเว้นที่เกิดขึ้นภายใน make หรือ callback จะไม่ถูกจับ:

try { make(10, function(res) { console.log(res); }); } catch(err) { // จะไม่ถูกจับ }

ใน callback approach จะทำงานกับข้อยกเว้น ดังต่อไปนี้: ส่งผลลัพธ์ไปยังพารามิเตอร์แรกของ callback และส่ง error ไปยังพารามิเตอร์ที่สอง ในกรณีนี้ การจัดการข้อผิดพลาดจะเกิดขึ้น ดังต่อไปนี้:

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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ