Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Dart :: การจัดการ exception ที่น่าสนใจ

$
0
0

วันนี้ทำการแก้ไข 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

[gist id="07e05a7ed212eee368d352906a1b95a3" file="1.dart"]

แบบที่ 2 catchError()

[gist id="07e05a7ed212eee368d352906a1b95a3" file="2.dart"]

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

[gist id="07e05a7ed212eee368d352906a1b95a3" file="3.dart"]

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

[gist id="07e05a7ed212eee368d352906a1b95a3" file="4.dart"]

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

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


Viewing all articles
Browse latest Browse all 1997

Trending Articles