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) เช่น ปิดไฟล์, ตัดการเชื่อมต่อ