การมี API ข้อยกเว้นที่แข็งแกร่งและออกแบบมาอย่างดีซึ่งมีความสอดคล้องนั้นเหมาะสมอย่างยิ่ง การใช้สิ่งนี้เพื่อบังคับใช้กฎเกณฑ์ทางธุรกิจก็อาจเหมาะสมเช่นกัน ในความเป็นจริงจากประสบการณ์ของฉันยิ่งธุรกิจมีความซับซ้อนมากเท่าไหร่ก็ยิ่งมีโอกาสที่จะถูกจัดการด้วยวิธีนี้มากขึ้นเท่านั้น บ่อยครั้งที่ง่ายหากไม่สามารถเขียนระบบที่คาดว่าจะมีข้อยกเว้นได้ง่ายกว่าการเขียนตรรกะการแยกสาขาที่เชื่อถือได้
นี่คือการพูดว่ากฎง่ายๆที่สามารถอธิบายได้ในประโยคเดียวโดยทั่วไปควรจะดำเนินการในลักษณะที่ป้องกันหรือมีอำนาจขึ้นอยู่กับว่ามันเป็น อย่างไรก็ตามหากคุณมีกฎที่มีหลายมิติและต้องการมากกว่าสามหรือสี่ปัจจัย (โดยเฉพาะหากการเลือกปัจจัยเหล่านี้ขึ้นอยู่กับปัจจัยอื่นอย่างน้อยหนึ่งปัจจัย) การเข้ารหัสข้อยกเว้นอาจจะสามารถบำรุงรักษาได้มากกว่า บ่อยครั้งในกรณีเหล่านี้พา ธ แบบลอจิกจะมีข้อยกเว้นหลายอย่างที่ต้องถูกโยนทิ้ง (ตรวจสอบสาเหตุที่ไม่สามารถดำเนินการได้) จากนั้น (หรือกลับกัน) จะมีการรักษาความปลอดภัยล้มเหลว (เพื่อตรวจสอบว่า ) บางครั้งจะมีตรรกะการสะสมที่มีสิทธิ์ที่จำเป็นต้องตรวจสอบ (ความพร้อมใช้งานของลูกหลาน / ความพร้อมของบรรพบุรุษบรรพบุรุษแสดงว่าวัตถุจะต้องใส่ลงไป ฯลฯ
ประโยชน์อย่างหนึ่งที่เกิดขึ้นจากการโยนข้อยกเว้นประเภทนี้คือช่วยให้คุณสามารถแยกออกและนำข้อยกเว้นสารตั้งต้นมาใช้ซ้ำในหลายพื้นที่ของโครงการของคุณ (นี่คือสาระสำคัญของการเขียนโปรแกรม Aspect Oriented) โดยการทำเช่นนี้คุณกำลังห่อหุ้มแง่มุมหนึ่งของกฎเกณฑ์ทางธุรกิจทั่วไปของคุณในองค์ประกอบที่มีอยู่และบำรุงรักษาได้ โดยทั่วไปส่วนประกอบเหล่านี้จะสอดคล้อง 1-1 กับข้อความแสดงข้อผิดพลาดที่ส่งออกไป (แม้ว่าบางครั้งคุณจะมีองค์ประกอบเดียวที่ส่งข้อยกเว้นต่างกันหลายข้อคุณไม่ควรยกเว้นข้อยกเว้นที่เหมือนกันจากหลายองค์ประกอบ)
ในความคิดของฉันมันยากที่จะออกแบบระบบที่เป็นข้อยกเว้นและเวลาในการพัฒนาเริ่มต้นนั้นยาวขึ้นเนื่องจากคุณต้องสร้างกระบวนการยกเว้นข้ามระดับ N ทั้งหมด อย่างไรก็ตามระบบเหล่านี้มักจะมีความเสถียรมากกว่า ในขณะที่ไม่สามารถออกแบบระบบที่ 'จะไม่ล้มเหลว' ประโยชน์ของการออกแบบโดยอาศัยข้อยกเว้นคือคุณคาดการณ์ถึงความล้มเหลวอยู่เสมอ สำหรับคนส่วนใหญ่กระบวนการสามารถตอบโต้ได้ง่าย มันเหมือนกับการขอเส้นทางและมีคนบอกคุณทุกถนนที่คุณไม่ควรเปิด