
บทนำ
ในการพัฒนาโปรแกรม ไม่มีใครสามารถหลีกเลี่ยง “ข้อผิดพลาด” หรือ “ความผิดพลาดขณะรันโปรแกรม” ได้ และสิ่งที่เราต้องทำคือ จัดการกับข้อผิดพลาดเหล่านั้นอย่างมืออาชีพ หรือที่เรียกว่า Exception Handling บทความนี้จะพาคุณเข้าใจตั้งแต่พื้นฐานไปจนถึงแนวปฏิบัติที่ดีที่สุด พร้อมตัวอย่างโค้ด
Exception คืออะไร?
Exception คือสถานการณ์ที่ผิดปกติระหว่างการทำงานของโปรแกรม เช่น:
- หารด้วยศูนย์
 - ไฟล์ไม่พบ
 - ข้อมูลไม่ตรงชนิด (type mismatch)
 - เชื่อมต่อฐานข้อมูลล้มเหลว
 
Exception Handling คืออะไร?
คือการเขียนโค้ดให้สามารถ “จับ” และ “จัดการ” ข้อผิดพลาดเหล่านี้อย่างเหมาะสม โดยไม่ให้โปรแกรม crash หรือล่มกลางทาง
รูปแบบพื้นฐาน (ภาษา Python)
try:
    result = 10 / 0
except ZeroDivisionError:
    print("เกิดข้อผิดพลาด: หารด้วยศูนย์ไม่ได้")
finally:
    print("จบการทำงาน")
Output:
เกิดข้อผิดพลาด: หารด้วยศูนย์ไม่ได้
จบการทำงาน
คำอธิบาย
try: ใส่โค้ดที่อาจเกิดข้อผิดพลาดexcept: จัดการเมื่อเกิดข้อผิดพลาดfinally: ทำงานเสมอไม่ว่าเกิด error หรือไม่

Best Practices ในการจัดการ Exception
1. อย่าใช้ except แบบกว้าง
# ❌ ไม่ควร
try:
    risky()
except:
    pass
การเขียนแบบนี้จะกลืน error ทุกชนิด ทำให้ debug ยาก
✅ ควรระบุประเภท Exception ที่เฉพาะเจาะจง
try:
    load_file()
except FileNotFoundError:
    print("ไม่พบไฟล์")
except PermissionError:
    print("ไม่มีสิทธิ์เข้าถึงไฟล์")
2. Logging ดีกว่า print
import logging
try:
    connect_db()
except Exception as e:
    logging.error(f"เกิดปัญหา: {str(e)}")
3. ใช้ raise อย่างมีเหตุผล
def divide(x, y):
    if y == 0:
        raise ValueError("y ต้องไม่เป็น 0")
    return x / y
การสร้าง Custom Exception
class InvalidAgeError(Exception):
    pass
def check_age(age):
    if age < 18:
        raise InvalidAgeError("อายุต้องมากกว่า 18 ปี")
Exception Handling ในภาษาอื่น
Java
try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("หารด้วยศูนย์ไม่ได้");
} finally {
    System.out.println("Done");
}
JavaScript
try {
  JSON.parse("{ bad json");
} catch (e) {
  console.error("เกิดปัญหากับ JSON:", e.message);
} finally {
  console.log("เสร็จสิ้น");
}
แนวทางแบบมืออาชีพ
- แยก Exception ตาม Layer (API, DB, Business Logic)
 - มี Error Code / Error Response ชัดเจน
 - ใช้ Middleware จัดการ Global Exception
 - ส่ง Stack Trace เฉพาะ dev / ไม่โชว์ production
 
สรุป
การจัดการ Exception อย่างมืออาชีพ ไม่ได้แค่ “ไม่ให้โปรแกรมล่ม” แต่ต้องมีความสามารถในการ debug, มี error log ที่เข้าใจได้ และป้องกันข้อมูลที่ไม่ควรถูกเปิดเผย ทั้งหมดนี้ทำให้ระบบมีความเสถียร และง่ายต่อการดูแลระยะยาว
บทความนี้ใช้เวลาอ่าน 10 – 15 นาที เขียนโดยทีมงาน poolsawat.com