Stay Informed

Error Handling ใน JavaScript

 

Error Handling ใน JavaScript


1. Error คืออะไร

Error (ข้อผิดพลาด) คือสิ่งที่เกิดขึ้นเมื่อโปรแกรมทำงานผิดพลาดระหว่าง runtime เช่น

  • Syntax Error — เขียนโค้ดผิดไวยากรณ์

  • TypeError — ใช้งานชนิดข้อมูลผิด

  • ReferenceError — เรียกตัวแปรที่ไม่มีอยู่

  • RangeError — ค่าผิดขอบเขต

ตัวอย่าง:

javascript

let x = y + 5; // ReferenceError: y is not defined

ถ้าไม่จัดการ error เหล่านี้ โปรแกรมจะหยุดทำงานทันที


2. การใช้ try...catch

เป็นวิธีหลักในการจัดการ error

โครงสร้าง:

javascript

try { // โค้ดที่อาจเกิด error } catch (error) { // โค้ดที่ทำเมื่อเกิด error }

ตัวอย่าง:

javascript

try { let result = 10 / 0; console.log(result); } catch (error) { console.log("เกิดข้อผิดพลาด:", error.message); }

แม้ในตัวอย่างนี้จะไม่มี error แต่ถ้ามี error เกิดขึ้นใน try
โปรแกรมจะกระโดดเข้า catch ทันที


3. ส่วน finally

finally จะทำงานทุกครั้งไม่ว่า error จะเกิดหรือไม่

javascript

try { let data = JSON.parse('{name:"มิว"}'); // JSON ผิดรูปแบบ } catch (error) { console.log("เกิด error:", error.message); } finally { console.log("จบการทำงาน"); }

4. การสร้าง Error เอง (Throw)

บางครั้งเราอยากสร้าง error เอง เพื่อควบคุม flow โปรแกรม

javascript

function divide(a, b) { if (b === 0) { throw new Error("ห้ามหารด้วยศูนย์"); } return a / b; } try { console.log(divide(10, 0)); } catch (e) { console.log("Error:", e.message); }
  • throw ใช้สร้าง error

  • new Error() ใช้สร้าง object error ใหม่


5. Catch เฉพาะบาง error

ตั้งแต่ ES10 (ปี 2019) เราสามารถเขียน catch แบบไม่ต้องมี parameter ได้

javascript

try { // ... } catch { console.log("มี error เกิดขึ้น"); }

แต่ถ้าอยากรู้รายละเอียด error ก็ควรใส่ parameter ไว้เช่นเดิม


6. ใช้ Error Handling กับ Async/Await

เมื่อทำงานกับ promise และ async/await เราก็ใช้ try/catch ได้

javascript

async function getData() { try { let res = await fetch("https://api.example.com/data"); let data = await res.json(); console.log(data); } catch (error) { console.log("เกิด error:", error.message); } }

แบบนี้จะปลอดภัยมากกว่าการใช้ .then().catch() เยอะในหลายกรณี


7. ประเภทของ Error ที่มีใน JS

  • Error (แม่ของทุก error)

  • SyntaxError

  • TypeError

  • ReferenceError

  • RangeError

  • EvalError

  • URIError

ตัวอย่าง:

javascript

try { null.f(); // TypeError } catch (e) { if (e instanceof TypeError) { console.log("เป็น TypeError"); } }

8. การใช้ Custom Error Class

ถ้าเขียนระบบใหญ่ๆ อาจต้องสร้าง error ของตัวเอง

javascript

class MyError extends Error { constructor(message) { super(message); this.name = "MyError"; } } try { throw new MyError("เกิดข้อผิดพลาดเฉพาะของระบบ"); } catch (e) { console.log(e.name + ": " + e.message); }

สรุปสั้นๆ อีกที

  • try...catch ช่วยให้โปรแกรมไม่หยุดทำงานเมื่อมี error

  • finally ทำงานเสมอ

  • throw ใช้สร้าง error เอง

  • ใช้ try...catch กับ async/await เสมอ

  • เขียน Custom Error ได้เมื่อระบบซับซ้อน




Facebook Comment