การจัดการ Exception Handling อย่างมืออาชีพ

Sharing is caring!

การจัดการ Exception Handling อย่างมืออาชีพ - Cover Image

บทนำ

ในการพัฒนาโปรแกรม ไม่มีใครสามารถหลีกเลี่ยง “ข้อผิดพลาด” หรือ “ความผิดพลาดขณะรันโปรแกรม” ได้ และสิ่งที่เราต้องทำคือ จัดการกับข้อผิดพลาดเหล่านั้นอย่างมืออาชีพ หรือที่เรียกว่า Exception Handling บทความนี้จะพาคุณเข้าใจตั้งแต่พื้นฐานไปจนถึงแนวปฏิบัติที่ดีที่สุด พร้อมตัวอย่างโค้ด

Exception คืออะไร?

Exception คือสถานการณ์ที่ผิดปกติระหว่างการทำงานของโปรแกรม เช่น:

  • หารด้วยศูนย์
  • ไฟล์ไม่พบ
  • ข้อมูลไม่ตรงชนิด (type mismatch)
  • เชื่อมต่อฐานข้อมูลล้มเหลว

Exception Handling คืออะไร?

คือการเขียนโค้ดให้สามารถ “จับ” และ “จัดการ” ข้อผิดพลาดเหล่านี้อย่างเหมาะสม โดยไม่ให้โปรแกรม crash หรือล่มกลางทาง

รูปแบบพื้นฐาน (ภาษา Python)

try:
    result = 10 / 0
except ZeroDivisionError:
    print("เกิดข้อผิดพลาด: หารด้วยศูนย์ไม่ได้")
finally:
    print("จบการทำงาน")

Output:

เกิดข้อผิดพลาด: หารด้วยศูนย์ไม่ได้
จบการทำงาน

คำอธิบาย

  • try: ใส่โค้ดที่อาจเกิดข้อผิดพลาด
  • except: จัดการเมื่อเกิดข้อผิดพลาด
  • finally: ทำงานเสมอไม่ว่าเกิด error หรือไม่

try-except-finally flow diagram

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

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *