คำถามที่น่าสนใจเกี่ยวกับการจัดการ error ในภาษา Go
ว่าถ้าต้องการโยน error หลายตัวกลับมาจาก function แบบง่าย ๆ
ทำแบบไหนได้บ้าง ?
ก่อนหน้านี้แนะนำ Multiple errors ไปแล้ว ด้วย errors.Join()
มาดูอีกวิธีกันดู
เลือกเอาที่ความชอบไปเลย
คำตอบ
เป็นแนวทางที่ผมใช้บ่อย ๆ คือ
การ wrap error กลับมาแบบตัวอย่างใน code
คำอธิบาย
- ทำการสร้าง error type ของแต่ละเรื่องขึ้นมาก่อน
- ใน function ทำการ return error กลับมา โดย wrap หรือห่อ error ต่าง ๆ ไว้ ผ่าน fmt.Errorf("%w")
จากนั้นทำการ run ดูผล
[gist id="31fbcd47baf8f289bdf68728fbd845a6" file="1.txt"]เพียงเท่านี้ก็ส่งกลับมาแบบง่าย ๆ ได้แล้ว
ส่วนผู้ใช้งานก็ไปตรวจสอบ type กันเองด้วย errors.As() ต่อไปนั่นเอง
ปล. errors.As() ใช้สำหรับการตรวจสอบ type ของ error เท่านั้น ไม่สนใจ value ของ error