ฉันได้อ่านคำแนะนำเกี่ยวกับคำถามนี้ว่าควรจะจัดการกับข้อยกเว้นอย่างไรให้ใกล้เคียงกับที่เป็นไปได้มากที่สุด
ขึ้นเขียงของฉันในการปฏิบัติที่ดีที่สุดคือว่าควรใช้ลอง / catch / ในที่สุดเพื่อส่งกลับ enum (หรือ int ที่แสดงถึงค่า 0 สำหรับข้อผิดพลาด 1 สำหรับตกลง 2 สำหรับคำเตือน ฯลฯ ขึ้นอยู่กับกรณี)เพื่อให้ คำตอบอยู่ในระเบียบเสมอหรือควรให้ข้อยกเว้นดำเนินไปเพื่อที่ส่วนการเรียกจะจัดการกับมัน
จากสิ่งที่ฉันสามารถรวบรวมได้สิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับกรณีดังนั้นคำแนะนำดั้งเดิมดูเหมือนแปลก
ตัวอย่างเช่นในเว็บเซอร์วิสคุณต้องการกลับสู่สถานะของหลักสูตรเสมอดังนั้นข้อยกเว้นใด ๆ จะต้องได้รับการจัดการทันที แต่ให้พูดในฟังก์ชั่นที่โพสต์ / รับข้อมูลบางส่วนผ่าน http คุณต้องการ ข้อยกเว้น (ตัวอย่างเช่นในกรณีของ 404) ที่เพิ่งผ่านไปหนึ่งอันที่ยิงมัน หากคุณไม่ทำเช่นนั้นคุณจะต้องสร้างวิธีที่จะแจ้งส่วนการโทรของคุณภาพของผลลัพธ์ (ข้อผิดพลาด: 404) รวมถึงผลลัพธ์เอง
แม้ว่าจะเป็นไปได้ที่จะลองจับข้อยกเว้น 404 ภายในฟังก์ชั่นตัวช่วยที่ได้รับ / โพสต์ข้อมูลคุณควรไหม มีเพียงฉันที่ใช้อักษรตัวเล็ก ๆ เพื่อแสดงสถานะในโปรแกรม (และจัดทำเอกสารอย่างเหมาะสม) แล้วใช้ข้อมูลนี้เพื่อจุดประสงค์ในการตรวจสอบความมีเหตุผล
อัปเดต:ฉันคาดหวังว่าจะมีข้อยกเว้นร้ายแรง / ไม่ร้ายแรงสำหรับการจัดหมวดหมู่หลัก แต่ฉันไม่ต้องการรวมสิ่งนี้ไว้เพื่อไม่ให้อคติต่อคำตอบ ให้ฉันอธิบายสิ่งที่เป็นคำถามเกี่ยวกับ: การจัดการข้อยกเว้นโยนไม่โยนข้อยกเว้น ผลกระทบที่ต้องการคืออะไร: ตรวจหาข้อผิดพลาดแล้วลองกู้คืนจากมัน หากไม่สามารถกู้คืนได้ให้แสดงความคิดเห็นที่มีความหมายที่สุด
อีกครั้งด้วย http get / post ตัวอย่างคำถามคือคุณควรให้วัตถุใหม่ที่อธิบายสิ่งที่เกิดขึ้นกับผู้โทรเดิมหรือไม่ หากผู้ช่วยนี้อยู่ในห้องสมุดที่คุณใช้อยู่คุณคาดว่าจะให้รหัสสถานะสำหรับการดำเนินการหรือคุณจะรวมไว้ในบล็อก try-catch หรือไม่ หากคุณกำลังออกแบบคุณจะให้รหัสสถานะหรือส่งข้อยกเว้นและให้ระดับบนแปลเป็นรหัสสถานะ / ข้อความแทนหรือไม่
เรื่องย่อ: คุณจะเลือกได้อย่างไรว่าชิ้นส่วนของรหัสแทนที่จะสร้างข้อยกเว้นส่งคืนรหัสสถานะพร้อมกับผลลัพธ์ที่อาจให้ผลลัพธ์