คำถามติดแท็ก error-handling

คำถามที่เกี่ยวข้องกับการจัดการข้อผิดพลาดและข้อยกเว้น ตามวิกิพีเดียการจัดการข้อยกเว้นเป็นกระบวนการของการตอบสนองต่อเหตุการณ์ที่เกิดขึ้นระหว่างการคำนวณข้อยกเว้น - เหตุการณ์ผิดปกติหรือเหตุการณ์พิเศษที่ต้องใช้การประมวลผลพิเศษ - มักจะเปลี่ยนการไหลปกติของการทำงานของโปรแกรม จัดทำโดยการสร้างภาษาโปรแกรมพิเศษหรือกลไกฮาร์ดแวร์คอมพิวเตอร์

2
การออกแบบคลาสยกเว้น
ฉันกำลังเขียนโค้ดไลบรารีขนาดเล็กและฉันมีปัญหากับการออกแบบการจัดการข้อยกเว้น ฉันต้องบอกว่าฉันยังคงสับสนกับคุณสมบัติของภาษา C ++ และพยายามอ่านให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อทำความเข้าใจกับสิ่งที่ฉันต้องทำเพื่อทำงานกับคลาสยกเว้นอย่างเหมาะสม ฉันตัดสินใจใช้system_errorวิธีการที่ได้แรงบันดาลใจจากการใช้งาน STL ของfuture_errorชั้นเรียน ฉันมีการแจงนับที่มีรหัสข้อผิดพลาด: enum class my_errc : int { error_x = 100, error_z = 101, error_y = 102 }; และคลาสข้อยกเว้นเดียว (สำรองตามerror_categoryประเภทของโครงสร้างและทุกอย่างอื่นที่จำเป็นโดยsystem_errorรุ่น): // error category implementation class my_error_category_impl : public std::error_category { const char* name () const noexcept override { return "my_lib"; } std::string message …

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