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

Tips :: ทำการ wrap Error ในภาษา Go

$
0
0

คำถามที่น่าสนใจเกี่ยวกับการจัดการ error ในภาษา Go
ว่าถ้าต้องการโยน error หลายตัวกลับมาจาก function แบบง่าย ๆ
ทำแบบไหนได้บ้าง ?

ก่อนหน้านี้แนะนำ Multiple errors ไปแล้ว ด้วย errors.Join()
มาดูอีกวิธีกันดู
เลือกเอาที่ความชอบไปเลย

คำตอบ
เป็นแนวทางที่ผมใช้บ่อย ๆ คือ
การ wrap error กลับมาแบบตัวอย่างใน code

[gist id="31fbcd47baf8f289bdf68728fbd845a6" file="demo-error.go"]

คำอธิบาย

  • ทำการสร้าง 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


Viewing all articles
Browse latest Browse all 1997

Trending Articles