เช้านี้เจอคำถามที่น่าสนใจจาก StackExchange
เรื่อง Result object vs throwing exceptions
ว่าเราจะเลือกแนวทางใด
สำหรับการส่งผลการทำงานกลับมาจาก function/method/module
ระหว่างส่งผลการทำงานเป็น result object ทั้ง  success และ failure
หรือทำการโยน exception กลับมาถ้าการทำงาน failure
ซึ่งมีคำตอบที่น่าสนใจ น่าคิด

ยกตัวอย่างเช่น

ให้ทำการส่งเป็น result object กลับมา สำหรับกรณีต่าง ๆ
ออกมาทั้ง success และ failure
เช่น user valid, password invalid และ user not found เป็นต้น

และให้โยน error และ exception ออกมา
ในกรณีที่ไม่คาดหวังกลับมา
เพื่อบอกหรือแจ้งให้ผู้เรียกรู้
เช่น database connection error, network problem เป็นต้น

ดังนั้นควรทำการพูดคุยและวางแผนในกรณีต่าง ๆ
ว่าจะรับมือและจัดการอย่างไร
ก่อนที่จะลงมือพัฒนาหรือสร้างขึ้นมา
มันเป็นตัวชี้วัดว่า เรามีความเป็นมืออาชีพมากพอหรือไม่

อีกมุมมองคือ ตามแต่ละวัฒนธรรมของภาษาโปรแกรมและเทคโนโลยีนั้น ๆ

บางภาษาไม่มีการโยน exception ออกมา 
ดังนั้นให้ return error มาทาง return object เช่นภาษา Go

บางภาษาทำการส่งค่ากลับมาผ่าน Out parameter เช่นภาษา C#

บางภาษาทำการโยน error กลับมาเลยเช่น Java

บางภาษาแยก flow การทำงานของ error ออกมาได้เลย เช่น Python

ในฐานะนักพัฒนานั้น คุณเลือกอย่างไร ?