การโยนข้อผิดพลาดใน JavaScript
ในบทเรียนที่ผ่านมาเราได้เรียนรู้สองกรณี ที่ JavaScript จะโยนข้อผิดพลาดเมื่อเกิดปัญหา
อย่างไรก็ตาม ในโปรเจกต์ของคุณอาจมีสถานการณ์อื่นๆ ที่ถือเป็นกรณีพิเศษสำหรับคุณ แต่ไม่ใช่สำหรับ JavaScript ในกรณีเช่นนี้ เราสามารถสร้างและโยนข้อผิดพลาดของผู้ใช้เองได้
เรามาดูไวยากรณ์ที่จำเป็นสำหรับสิ่งนี้กัน
เริ่มแรกเราต้องสร้างข้อผิดพลาดโดยใช้คำสั่ง
new Error โดยส่งข้อความของข้อผิดพลาดเป็นพารามิเตอร์:
new Error('ข้อความข้อผิดพลาด');
จากนั้นโยนข้อผิดพลาดนี้โดยใช้คำสั่ง
throw:
throw new Error('ข้อความข้อผิดพลาด');
การโยนข้อผิดพลาดทำให้ JavaScript
ถือว่ามีสถานการณ์พิเศษเกิดขึ้น
หมายความว่าข้อผิดพลาดดังกล่าวสามารถถูกดักจับได้
โดยใช้โครงสร้าง try-catch และ
ประมวลผลตามที่ต้องการ
มาดูตัวอย่างวิธีการใช้สิ่งนี้กัน สมมติว่าเรามีฟังก์ชันที่ใช้หารตัวเลขหนึ่งด้วยอีกตัวหนึ่ง:
function div(a, b) {
return a / b;
}
ให้เราถือว่าการหารด้วยศูนย์
เป็นสิ่งต้องห้าม และเมื่อพยายามทำเช่นนั้น
ควรเกิดสถานการณ์พิเศษขึ้น สำหรับสิ่งนี้
เราจะตรวจสอบในฟังก์ชันว่ามีการพยายาม
หารด้วย 0 หรือไม่ หากไม่มี - ให้ทำการหาร
แต่หากมี - ให้โยนข้อผิดพลาด:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('ข้อผิดพลาดการหารด้วยศูนย์');
}
}
เริ่มแรกให้เราลองหารด้วย
0 โดยไม่ดักจับข้อผิดพลาด:
alert( div(3, 0) );
ในกรณีนี้การทำงานของสคริปต์จะหยุดลง
และในคอนโซลจะปรากฏข้อผิดพลาดพร้อมข้อความ 'ข้อผิดพลาด
การหารด้วยศูนย์' (ลองตรวจสอบดู) คราวนี้เรามา
ลองดักจับข้อผิดพลาดของเราและ
ประมวลผลมันในทางใดทางหนึ่ง:
try {
alert( div(3, 0) );
} catch (error) {
alert('คุณกำลังพยายามหารด้วย 0 ซึ่งเป็นสิ่งต้องห้าม');
}
ใน JavaScript การพยายามหารากที่สองของจำนวนลบ จะไม่ทำให้เกิดการโยนข้อผิดพลาด:
let result = Math.sqrt(-1);
console.log(result); // แสดงผล NaN
จงเขียนฟังก์ชันของคุณเองที่ใช้ในการหารากที่สอง ของตัวเลขและในขณะเดียวกันก็โยนข้อผิดพลาด หากมีการหารากที่สองของจำนวนลบ