การโยนข้อผิดพลาดใน JavaScript

ในบทเรียนที่ผ่านมาเราได้เรียนรู้สองกรณี ที่ JavaScript จะโยนข้อผิดพลาดเมื่อเกิดปัญหา

อย่างไรก็ตาม ในโปรเจกต์ของคุณอาจมีสถานการณ์อื่นๆ ที่ถือเป็นกรณีพิเศษสำหรับคุณ แต่ไม่ใช่สำหรับ JavaScript ในกรณีเช่นนี้ เราสามารถสร้างและโยนข้อผิดพลาดของผู้ใช้เองได้

เรามาดูไวยากรณ์ที่จำเป็นสำหรับสิ่งนี้กัน เริ่มแรกเราต้องสร้างข้อผิดพลาดโดยใช้คำสั่ง new Error โดยส่งข้อความของข้อผิดพลาดเป็นพารามิเตอร์:

javascriptnew Error('ข้อความข้อผิดพลาด');

จากนั้นโยนข้อผิดพลาดนี้โดยใช้คำสั่ง throw:

javascriptthrow new Error('ข้อความข้อผิดพลาด');

การโยนข้อผิดพลาดทำให้ JavaScript ถือว่ามีสถานการณ์พิเศษเกิดขึ้น หมายความว่าข้อผิดพลาดดังกล่าวสามารถถูกดักจับได้ โดยใช้โครงสร้าง try-catch และ ประมวลผลตามที่ต้องการ

มาดูตัวอย่างวิธีการใช้สิ่งนี้กัน สมมติว่าเรามีฟังก์ชันที่ใช้หารตัวเลขหนึ่งด้วยอีกตัวหนึ่ง:

javascriptfunction div(a, b) {
  return a / b;
}

ให้เราถือว่าการหารด้วยศูนย์ เป็นสิ่งต้องห้าม และเมื่อพยายามทำเช่นนั้น ควรเกิดสถานการณ์พิเศษขึ้น สำหรับสิ่งนี้ เราจะตรวจสอบในฟังก์ชันว่ามีการพยายาม หารด้วย 0 หรือไม่ หากไม่มี - ให้ทำการหาร แต่หากมี - ให้โยนข้อผิดพลาด:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('ข้อผิดพลาดการหารด้วยศูนย์');
  }
}

เริ่มแรกให้เราลองหารด้วย 0 โดยไม่ดักจับข้อผิดพลาด:

javascriptalert( div(3, 0) );

ในกรณีนี้การทำงานของสคริปต์จะหยุดลง และในคอนโซลจะปรากฏข้อผิดพลาดพร้อมข้อความ 'ข้อผิดพลาด การหารด้วยศูนย์' (ลองตรวจสอบดู) คราวนี้เรามา ลองดักจับข้อผิดพลาดของเราและ ประมวลผลมันในทางใดทางหนึ่ง:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('คุณกำลังพยายามหารด้วย 0 ซึ่งเป็นสิ่งต้องห้าม');
}
Задание 1

ใน JavaScript การพยายามหารากที่สองของจำนวนลบ จะไม่ทำให้เกิดการโยนข้อผิดพลาด:

javascriptlet result = Math.sqrt(-1);
console.log(result); // แสดงผล NaN

จงเขียนฟังก์ชันของคุณเองที่ใช้ในการหารากที่สอง ของตัวเลขและในขณะเดียวกันก็โยนข้อผิดพลาด หากมีการหารากที่สองของจำนวนลบ