Tag: error-handling

6 รายการ

Blog

กล่อง Optional เปิดมีติ๊กเขียว และกล่องว่างมีเครื่องหมายตกใจสีอำพัน
javaoptionalerror-handling

Java Optional.orElseThrow: บังคับมีค่าที่ขอบเขตแทนคืน null

ใช้ orElseThrow เมื่อค่าต้องมีจริง พร้อมแยกจาก orElse และตัวอย่างรันจริง

น้องกาย
นากกายต้นฉบับรับรางสีเขียวและรางสีแดงมารวมเป็นซองผลลัพธ์ชนิดเดียวที่จุด boundary
javacompletablefutureasync

Java CompletableFuture.handle: รวมทางสำเร็จและล้มเหลวไว้ที่ boundary เดียว

ใช้ handle แปลงผล async เป็น outcome แบบชัดเจน พร้อมแยกจาก exceptionally และ whenComplete

พี่โชว์
ปูต้นฉบับยกแว่นขยายดูหีบที่หลุดจากรางสีเขียว โดยหีบยังเคลื่อนต่อไปยังประตู error เดิม
rustresulterror-handling

Rust Result.inspect_err: สังเกต error โดยไม่ทำลายเส้นทางส่งต่อ

เพิ่ม logging หรือ metrics ให้ Result ด้วย inspect_err พร้อมแยก observation ออกจาก recovery และการเปลี่ยนชนิด error

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง ลังไม้ห้าใบเหมือนกันเรียงกันบนโต๊ะยาว มีเพียงใบกลางที่ปักธงเล็กสีอำพันไว้บนฝา อิกัวนาตัวเล็กยืนข้างลังใบนั้นและจดบันทึกลงกระดาษครีมบนคลิปบอร์ด
zigtutorialerror-handling

Zig 0.16 บทที่ 7: error ไม่มีข้อมูลแนบ แล้วจะบอกรายละเอียดยังไง

งานจริงของ error handling ใน Zig — รูปแบบ diagnostics struct ที่ standard library ใช้เอง, ทดสอบทุกจุดที่หน่วยความจำเต็มด้วย checkAllAllocationFailures, ตาราง safety ต่อ build mode ที่ผมรันจริงทั้งสามโหมด และการเขียน panic handler เองแบบ 0.16

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กยืนดูรางน้ำไม้ที่แยกเป็นสองทาง ทางหนึ่งไหลต่อไปข้างหน้า อีกทางเทลงถาดที่มีป้ายสีอำพันวางรออยู่ ไม่มีน้ำหกออกนอกราง
zigtutorialerror-handling

Zig 0.16 บทที่ 6: error ที่คอมไพเลอร์ไม่ยอมให้คุณเมิน

ระบบ error ของ Zig ไม่มี exception ไม่มีการคลี่ stack และเมินไม่ได้ — error set เป็นชนิดข้อมูล, try/catch/errdefer, switch บน error ที่ต้องครบทุกกรณี และ error return trace ที่ผมรันจริงแล้วพบว่า ReleaseSafe ปิดไว้ ต่างจากที่เอกสารส่วนใหญ่บอก พร้อมเทียบกับ C++, Java, C#, Go และ Rust

พี่โชว์
Beyond Syntax: เขียน Go ให้ Scale กับทีม ไม่ใช่แค่ CPU
gogolangbest-practices

Beyond Syntax: เขียน Go ให้ Scale กับทีม ไม่ใช่แค่ CPU

รวม 12 แนวคิดที่แยก Go ระดับ "เขียนได้" ออกจาก Go ระดับ "คิดมาแล้ว" — ตั้งแต่ function signature, error handling, interface design, concurrency ownership ไปจนถึง package structure, naming convention, dependency injection และ graceful shutdown ที่ทำให้โค้ดอ่านง่ายขึ้นจริงในระดับทีม

Dev Team