8
ข้อยกเว้น: ทำไมต้องโยนเร็ว ทำไมต้องมาสาย?
มีวิธีปฏิบัติที่ดีที่สุดที่เป็นที่รู้จักมากมายเกี่ยวกับการจัดการข้อยกเว้นในการแยก ฉันรู้ว่า "สิ่งที่ต้องทำและไม่ควรทำ" ดีพอ แต่สิ่งต่าง ๆ มีความซับซ้อนเมื่อมันมาถึงวิธีปฏิบัติที่ดีที่สุดหรือรูปแบบในสภาพแวดล้อมขนาดใหญ่ "โยนเร็วไปช้า" - ฉันเคยได้ยินมาหลายครั้งแล้วและมันก็ทำให้ฉันสับสน ทำไมฉันควรโยน แต่เนิ่นๆและไปช้าถ้าอยู่ในระดับต่ำจะมีข้อยกเว้นตัวชี้โมฆะ? ทำไมฉันถึงต้องจับมันในระดับที่สูงกว่า? มันไม่มีเหตุผลที่ฉันจะจับข้อยกเว้นระดับต่ำในระดับที่สูงขึ้นเช่นชั้นธุรกิจ ดูเหมือนว่าจะละเมิดข้อกังวลของแต่ละชั้น ลองนึกภาพสถานการณ์ต่อไปนี้: ฉันมีบริการที่คำนวณตัวเลข ในการคำนวณตัวเลขบริการเข้าถึงที่เก็บเพื่อรับข้อมูลดิบและบริการอื่น ๆ เพื่อเตรียมการคำนวณ หากมีข้อผิดพลาดเกิดขึ้นที่เลเยอร์การดึงข้อมูลทำไมฉันต้องโยน DataRetrievalException ไปสู่ระดับที่สูงขึ้น ในทางตรงกันข้ามฉันต้องการรวมข้อยกเว้นไว้ในข้อยกเว้นที่มีความหมายเช่น CalculationServiceException ทำไมโยนเร็วทำไมต้องมาสาย?