วันนี้ทำการแก้ไข code ที่พัฒนาด้วยภาษา Dart
ก็ไปเจอรูปแบบการจัดการ exception/error หลายรูปแบบ
ที่ทำงานกับ async function
จึงลองทำการสรุปไว้นิดหน่อย

พื้นฐานเล็กน้อยสำหรับ Dart

โดยที่ Dart จะแยก Error กับ Exception ออกจากกัน

Error นั้นจะใช้สำหรับปัญหาในระดับ system เช่น memory error เป็นต้น
แน่นอนว่าเราไม่สามารถคาดเดาได้เลย

ส่วน Exception นั้นใช้สำหรับระดับ application
เพิ่มเติมคือ รายละเอียดของปัญหาต่าง ๆ มาด้วย
ซึ่งทำให้สามารถดักจับได้ง่าย
รวมทั้งแก้ไขได้ง่ายขึ้น
แน่นอนว่าเรารู้ว่า น่าจะมีปัญหาอะไรเกิดขึ้นมาบ้าง

โดยการใช้งานทั้งคู่ ควรที่จะสร้าง custom error/exception ขึ้นมาใช้
จะดีกว่าการใช้งานตรง ๆ ไปเลย

รูปแบบที่น่าสนใจประกอบไปด้วย

  • try-catch-finally ปกติ + async-await
  • catchError()
  • onError ในการเรียกพวก async generator
  • ใช้งาน Zone class มาช่วย

มาดูตัวอย่าง code ในแต่ละรูปแบบกัน

แบบที่ 1 try-catch-finally ปกติ + async-await

แบบที่ 2 catchError()

แบบที่ 3 onError ในการเรียกพวก async generator

แบบที่ 4 ใช้งาน Zone class มาช่วย

ปล. Exception ทุกอย่างของ Dart นั้นจะเป็น unchecked exception ทั้งหมด

ดูเพิ่มเติมได้ที่

Tags: