Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดการข้อยกเว้น (Exception Handling) ใน JavaScript ทำงานอย่างไร

JavaScript ใช้โครงสร้าง try...catch...finally เพื่อจัดการข้อยกเว้น (exceptions) รองรับการจับข้อผิดพลาดที่เกิดขณะรันไทม์ (runtime) และข้อผิดพลาดที่โปรแกรมเมอร์สร้างขึ้น (throw) แต่ ไม่สามารถจับ Syntax Errors ได้ (เพราะเกิดขณะ parse ก่อนรัน)

ไวยากรณ์

<script>
  try {
    // โค้ดที่อาจเกิดข้อผิดพลาด
  } catch (e) {
    // โค้ดจัดการเมื่อเกิดข้อยกเว้น
  } finally {
    // โค้ดที่ทำงานเสมอ ไม่ว่าจะมี error หรือไม่
  }
</script>

ตัวอย่าง

<html>
  <head>
    <script>
      function myFunc() {
        var x = 20;
        try {
          alert("Value of variable a is: " + a); // a ไม่ได้ประกาศ
        } catch (e) {
          alert("Error: " + e.message); // ใช้ e.message แทน e.description (deprecated)
        }
      }
    </script>
  </head>
  <body>
    <p>คลิกเพื่อดูผลลัพธ์:</p>
    <form>
      <input type="button" value="Click Me" onclick="myFunc();" />
    </form>
  </body>
</html>

คำสำคัญ throw

ใช้สร้างข้อยกเว้นเอง (custom exceptions):

function divide(a, b) {
  if (b === 0) {
    throw new Error("Divide by zero error");
  }
  return a / b;
}

try {
  divide(10, 0);
} catch (e) {
  console.log(e.message); // "Divide by zero error"
}

Error Types ใน JavaScript

  • Error - พื้นฐาน
  • SyntaxError - ผิดไวยากรณ์ (จับไม่ได้ด้วย try-catch)
  • ReferenceError - ใช้ตัวแปรที่ไม่มีอยู่
  • TypeError - ชนิดข้อมูลผิด
  • RangeError - ค่าออกนอกช่วง
  • URIError - encode/decode URI ผิด
  • EvalError - eval() ผิด (เก่า)

Best Practice: ใช้ finally สำหรับการทำความสะอาด (cleanup) เช่น ปิดไฟล์, ตัดการเชื่อมต่อ