เช่นเดียวกับภาษา Java JavaScript สามารถโยนข้อยกเว้นผ่านคำสั่งโยน ซึ่งแตกต่างจากภาษา Java JavaScript สามารถโยนค่าทุกประเภทผ่านคำสั่งโยนไม่เพียง แต่จะโยนวัตถุข้อผิดพลาด
การคัดลอกรหัสมีดังนี้:
// โยนวัตถุข้อผิดพลาด
พยายาม{
โยนข้อผิดพลาดใหม่ ("ข้อความในวัตถุข้อผิดพลาด");
} catch (e) {
console.log (e); // ข้อผิดพลาด: ข้อความในวัตถุข้อผิดพลาด
-
พยายาม{
โยน "ข้อความดิบ";
} catch (ข้อความ) {
console.log (ข้อความ); // ข้อความดิบ
console.log (ข้อความ typeof); // string
-
พยายาม{
โยน 42;
} catch (รหัส) {
console.log (รหัส); // 42
console.log (รหัส typeof); // หมายเลข
-
เช่นเดียวกับภาษา Java หากข้อยกเว้นไม่ได้ถูกจับโดยคำสั่งใด ๆ ข้อยกเว้นจะถูกส่งไปยังผู้ใช้ในที่สุด:
การคัดลอกรหัสมีดังนี้:
พยายาม{
// โยนข้อผิดพลาดใหม่ ("ข้อผิดพลาดทดสอบ"); // ข้อผิดพลาดจะถูกโยนลงไป ข้อผิดพลาด: ข้อผิดพลาดในการทดสอบ
} ในที่สุด{
-
พยายาม{
โยน 42; // ข้อผิดพลาดจะถูกโยน ข้อผิดพลาด: 42
} ในที่สุด{
-
สำหรับข้อยกเว้นการขว้างปาจับจาวาสคริปต์ยังใช้คำสั่งลอง/จับ/ในที่สุด กฎการใช้งานคือ: จำเป็นต้องลองจับและในที่สุดก็เป็นคำสั่งทางเลือก แต่อย่างน้อยหนึ่งของการจับและในที่สุดก็ต้องปรากฏขึ้น
ในคำสั่ง Catch พารามิเตอร์ E (หรือชื่อตัวแปรทางกฎหมายอื่น ๆ ) สามารถกำหนดเพื่อจัดเก็บค่าผิดปกติที่ถูกโยน ภายในคำสั่ง Catch พารามิเตอร์นี้สามารถใช้เป็นตัวแปรท้องถิ่น ซึ่งแตกต่างจากการใช้งานตัวแปรอื่น ๆ ใน JavaScript ตัวแปรพารามิเตอร์ในคำสั่งจับนั้นใช้ได้เฉพาะภายในคำสั่ง Catch (ขอบเขตของตัวแปรนี้ จำกัด อยู่ที่คำสั่ง Catch)
สำหรับคำสั่งในที่สุดรหัสในที่สุดจะถูกดำเนินการโดยไม่คำนึงว่ามีข้อยกเว้นในการลองหรือไม่ รายละเอียดรวมถึง:
1. ไม่มีข้อยกเว้นเกิดขึ้นในการลอง เมื่อมีการดำเนินการคำสั่งลองรหัสในที่สุดจะถูกดำเนินการ
2. ไม่มีข้อยกเว้นเกิดขึ้นในการลอง แต่เมื่อออกจากรหัสลองเนื่องจากการดำเนินการของการหยุดพัก, ดำเนินการต่อหรือส่งคืนคำสั่งรหัสในที่สุดจะถูกดำเนินการ
3. ข้อยกเว้นเกิดขึ้นในการลอง หลังจากข้อยกเว้นถูกประมวลผลโดยคำสั่ง Catch รหัสในที่สุดจะถูกดำเนินการ
4. ข้อยกเว้นเกิดขึ้นในการลอง แต่เมื่อข้อยกเว้นจะต้องถูกโยนขึ้นอย่างต่อเนื่องเนื่องจากไม่มีคำสั่งจับรหัสในที่สุดจะถูกดำเนินการ เป็นที่น่าสังเกตว่าในกรณีที่คำสั่งจับหายไป JavaScript จะเรียกใช้รหัสในที่สุดก่อนแล้วจึงทำการยกเว้นต่อไป
ในที่สุดรหัสหากหยุดคำสั่งต่อหรือส่งคืนจะปรากฏขึ้น JavaScript จะเรียกใช้คำสั่งเหล่านี้โดยตรงและละเว้นการหยุดพักดำเนินการต่อหรือส่งคืนคำสั่งที่อาจมีอยู่ในรหัสลอง; แม้ว่าคำสั่ง Catch จะหายไปส่งผลให้มีการยกเว้นที่ต้องรายงาน JS จะยกเลิกข้อมูลการรายงานข้อยกเว้นและดำเนินการต่อเพื่อดำเนินการหยุดดำเนินการต่อหรือส่งคืนคำสั่งในรหัสในที่สุด ในทำนองเดียวกันหากมีข้อยกเว้นถูกโยนลงในรหัสสุดท้าย JavaScript จะยกเลิกการหยุดพักทั้งหมดดำเนินการต่อหรือส่งคืนคำสั่งในรหัสลองและยกเลิกพฤติกรรมการรายงานข้อยกเว้นที่เป็นไปได้และเพียงแค่โยนข้อยกเว้นในรหัสสุดท้าย