ลองนึกภาพโค้ดที่มีไฟล์นับพันไฟล์โดยใช้ไลบรารีหลาย ๆ ไฟล์ ลองนึกภาพทั้งหมดของพวกเขาถูกเข้ารหัสเช่นนี้
ลองจินตนาการถึงตัวอย่างเช่นการอัปเดตเซิร์ฟเวอร์ของคุณทำให้ไฟล์การกำหนดค่าหนึ่งไฟล์หายไป และตอนนี้สิ่งที่คุณมีคือการติดตามสแต็กเป็นข้อยกเว้นตัวชี้โมฆะเมื่อคุณลองใช้คลาสนั้น: คุณจะแก้ไขได้อย่างไร อาจใช้เวลาหลายชั่วโมงโดยที่อย่างน้อยการบันทึกการติดตามสแต็กดิบของไฟล์ที่ไม่พบ [เส้นทางของไฟล์] อาจทำให้คุณสามารถแก้ไขได้ในชั่วขณะ
หรือแย่กว่านั้นคือความล้มเหลวในไลบรารีที่คุณใช้หลังจากการอัปเดตซึ่งทำให้โค้ดของคุณล้มเหลวในภายหลัง คุณจะติดตามสิ่งนี้กลับไปที่ห้องสมุดได้อย่างไร?
แม้ไม่มีข้อผิดพลาดที่มีประสิทธิภาพการจัดการเพียงแค่ทำ
throw new IllegalStateException("THIS SHOULD NOT HAPPENING")
หรือ
LOGGER.error("[method name]/[arguments] should not be there")
อาจช่วยให้คุณประหยัดเวลาได้หลายชั่วโมง
แต่มีบางกรณีที่คุณอาจต้องการละเว้นข้อยกเว้นและส่งคืนค่า null เช่นนี้ (หรือไม่ทำอะไรเลย) โดยเฉพาะอย่างยิ่งถ้าคุณรวมกับรหัสดั้งเดิมที่ออกแบบมาไม่ดีและข้อยกเว้นนี้คาดว่าเป็นกรณีปกติ
ในความเป็นจริงเมื่อทำเช่นนี้คุณควรสงสัยว่าจริงๆคุณกำลังละเว้นข้อยกเว้นหรือ "จัดการอย่างถูกต้อง" สำหรับความต้องการของคุณ หากการคืนค่า Null เป็น "จัดการอย่างเหมาะสม" ข้อยกเว้นของคุณในกรณีที่กำหนดให้ทำเช่นนั้น และเพิ่มความคิดเห็นว่าทำไมนี่คือสิ่งที่ควรทำ
แนวทางปฏิบัติที่ดีที่สุดคือสิ่งที่ต้องปฏิบัติตามในกรณีส่วนใหญ่อาจ 80% หรือ 99% แต่คุณจะพบกรณีขอบหนึ่งกรณีที่ไม่ได้ใช้ ในกรณีนี้แสดงความคิดเห็นว่าทำไมคุณไม่ปฏิบัติตามแบบฝึกหัดสำหรับคนอื่น (หรือแม้แต่ตัวคุณเอง) ที่จะอ่านรหัสของคุณในภายหลัง