ในฐานะที่เป็นคำถามอัตนัยเรื่องนี้ควรปิด แต่ก็ยังคงเปิดอยู่:
นี่เป็นส่วนหนึ่งของนโยบายภายในที่ใช้ในสถานที่ทำงานก่อนหน้าของฉันและทำงานได้ดีจริงๆ ทั้งหมดนี้มาจากความทรงจำดังนั้นฉันจำคำศัพท์ไม่ได้ เป็นที่น่าสังเกตว่าพวกเขาไม่ได้ใช้ข้อยกเว้นที่ตรวจสอบแล้ว แต่อยู่นอกเหนือขอบเขตของคำถาม ข้อยกเว้นที่ไม่ได้ตรวจสอบพวกเขาใช้แบ่งออกเป็น 3 ประเภทหลัก
NullPointerException: อย่าโยนโดยเจตนา NPE จะถูกส่งออกไปโดย VM เท่านั้นเมื่อยกเลิกการอ้างอิงการอ้างอิง Null ความพยายามที่เป็นไปได้ทั้งหมดจะต้องทำเพื่อให้แน่ใจว่าสิ่งเหล่านี้จะไม่ถูกโยนทิ้ง @Nullable และ @NotNull ควรใช้ร่วมกับเครื่องมือวิเคราะห์รหัสเพื่อค้นหาข้อผิดพลาดเหล่านี้
IllegalArgumentException: ส่งออกมาเมื่อข้อโต้แย้งไปยังฟังก์ชั่นไม่สอดคล้องกับเอกสารสาธารณะเช่นว่าข้อผิดพลาดสามารถระบุและอธิบายในแง่ของการขัดแย้งส่งผ่านสถานการณ์ของ OP จะตกอยู่ในหมวดหมู่นี้
IllegalStateException: ส่งออกมาเมื่อมีการเรียกใช้ฟังก์ชันและอาร์กิวเมนต์จะไม่คาดคิด ณ เวลาที่ส่งผ่านหรือเข้ากันไม่ได้กับสถานะของวัตถุที่วิธีนั้นเป็นสมาชิกอยู่
ตัวอย่างเช่นมีสองรุ่นภายในของ IndexOutOfBoundsException ที่ใช้ในสิ่งที่มีความยาว หนึ่งคลาสย่อยของ IllegalStateException ใช้หากดัชนีมีขนาดใหญ่กว่าความยาว คลาสย่อยอื่น ๆ ของ IllegalArgumentException ใช้หากดัชนีเป็นลบ นี่เป็นเพราะคุณสามารถเพิ่มรายการลงในวัตถุและอาร์กิวเมนต์จะถูกต้องในขณะที่จำนวนลบจะไม่ถูกต้อง
อย่างที่ฉันพูดไประบบนี้ใช้งานได้ดีมากและพาใครบางคนมาอธิบายว่าทำไมความแตกต่างอยู่ที่นั่น: "ขึ้นอยู่กับประเภทของข้อผิดพลาดมันค่อนข้างตรงไปตรงมาสำหรับคุณที่จะคิดว่าจะทำอย่างไร ว่ามีอะไรผิดพลาดคุณสามารถรู้ได้ว่าจะหาข้อผิดพลาดนั้นได้ที่ไหนและสร้างข้อมูลการดีบั๊กเพิ่มเติม "
NullPointerException: จัดการกับกรณี Null หรือใส่ในการยืนยันเพื่อที่จะไม่โยน NPE หากคุณใส่คำยืนยันเป็นเพียงหนึ่งในสองประเภทอื่น ๆ ถ้าเป็นไปได้ให้ทำการดีบั๊กต่อไปราวกับว่ามีการยืนยันในตอนแรก
IllegalArgumentException: คุณมีบางอย่างผิดปกติในไซต์โทรของคุณ หากค่าที่ส่งผ่านนั้นมาจากฟังก์ชันอื่นให้ค้นหาสาเหตุที่คุณรับค่าที่ไม่ถูกต้อง หากคุณผ่านหนึ่งในข้อโต้แย้งของคุณเผยแพร่ข้อผิดพลาดตรวจสอบสแตกการโทรจนกว่าคุณจะพบฟังก์ชั่นที่ไม่ได้กลับสิ่งที่คุณคาดหวัง
IllegalStateException: คุณไม่ได้เรียกฟังก์ชันของคุณตามลำดับที่ถูกต้อง หากคุณกำลังใช้หนึ่งในข้อโต้แย้งของคุณตรวจสอบพวกเขาและโยน IllegalArgumentException อธิบายปัญหา จากนั้นคุณสามารถแพร่กระจายแก้มขึ้นกับกองซ้อนจนกว่าคุณจะพบปัญหา
อย่างไรก็ตามประเด็นของเขาคือคุณสามารถคัดลอก IllegalArgumentAssertions ขึ้นมาในสแต็กเท่านั้น ไม่มีวิธีที่คุณจะเผยแพร่ IllegalStateExceptions หรือ NullPointerExceptions ขึ้นสแต็กเพราะพวกเขามีบางอย่างที่เกี่ยวข้องกับการทำงานของคุณ