Exception
เป็นประเภทฐานสำหรับข้อยกเว้นทั้งหมดและไม่ระบุรายละเอียดอย่างมาก คุณไม่ควรโยนข้อยกเว้นนี้เพราะไม่มีข้อมูลที่เป็นประโยชน์ใด ๆ การเรียกจับรหัสสำหรับข้อยกเว้นไม่สามารถแยกแยะข้อยกเว้นที่ถูกโยนทิ้งโดยเจตนา (จากตรรกะของคุณ) จากข้อยกเว้นของระบบอื่น ๆ ที่ไม่ต้องการโดยสิ้นเชิงและชี้ให้เห็นข้อผิดพลาดที่แท้จริง
SystemException
ด้วยเหตุผลเดียวกันยังนำไปใช้ หากคุณดูรายการประเภทที่ได้รับคุณจะเห็นข้อยกเว้นอื่น ๆ อีกมากมายที่มีความหมายที่แตกต่างกันมาก
NullReferenceException
และIndexOutOfRangeException
เป็นประเภทที่แตกต่างกัน ตอนนี้สิ่งเหล่านี้เป็นข้อยกเว้นที่เฉพาะเจาะจงมากดังนั้นการโยนทิ้งอาจเป็นเรื่องปกติ อย่างไรก็ตามคุณยังคงไม่ต้องการโยนสิ่งเหล่านี้ออกไปเนื่องจากโดยปกติแล้วหมายความว่ามีข้อผิดพลาดเกิดขึ้นจริงในตรรกะของคุณ null
ตัวอย่างเช่นการอ้างอิงที่ว่างหมายถึงข้อยกเว้นว่าคุณกำลังพยายามที่จะเข้าถึงสมาชิกของวัตถุซึ่งเป็น หากเป็นไปได้ในโค้ดของคุณคุณควรตรวจสอบอย่างชัดเจนnull
และโยนข้อยกเว้นที่เป็นประโยชน์มากกว่าแทน (ตัวอย่างArgumentNullException
) ในทำนองเดียวกันIndexOutOfRangeException
เกิดขึ้นเมื่อคุณเข้าถึงดัชนีที่ไม่ถูกต้อง (ในอาร์เรย์ไม่ใช่รายการ) คุณควรตรวจสอบให้แน่ใจว่าคุณไม่ได้ทำเช่นนั้นตั้งแต่แรกและตรวจสอบขอบเขตของเช่นอาร์เรย์ก่อน
มีข้อยกเว้นอื่น ๆ อีกสองสามข้อเช่นสองข้อนี้InvalidCastException
หรือDivideByZeroException
ซึ่งเกิดจากข้อผิดพลาดเฉพาะในโค้ดของคุณและโดยปกติจะหมายความว่าคุณทำอะไรผิดพลาดหรือคุณไม่ได้ตรวจสอบค่าที่ไม่ถูกต้องก่อน การโยนมันออกจากรหัสของคุณโดยเจตนาคุณกำลังทำให้รหัสการโทรยากขึ้นเพื่อตรวจสอบว่ามีการโยนรหัสเนื่องจากมีข้อผิดพลาดบางประการในรหัสหรือเพียงเพราะคุณตัดสินใจที่จะใช้ซ้ำเพื่อบางสิ่งบางอย่างในการนำไปใช้งาน
แน่นอนว่ามีข้อยกเว้นบางประการสำหรับกฎเหล่านี้ หากคุณกำลังสร้างบางสิ่งที่อาจทำให้เกิดข้อยกเว้นซึ่งตรงกับสิ่งที่มีอยู่คุณสามารถใช้สิ่งนั้นได้โดยเฉพาะอย่างยิ่งหากคุณกำลังพยายามจับคู่พฤติกรรมบางอย่างในตัว เพียงตรวจสอบให้แน่ใจว่าคุณได้เลือกประเภทข้อยกเว้นที่เฉพาะเจาะจงมากแล้ว
โดยทั่วไปแล้วเว้นแต่คุณจะพบข้อยกเว้น (เฉพาะ) ที่ตอบสนองความต้องการของคุณคุณควรพิจารณาสร้างประเภทข้อยกเว้นของคุณเองสำหรับข้อยกเว้นที่คาดไว้โดยเฉพาะ โดยเฉพาะอย่างยิ่งเมื่อคุณเขียนโค้ดไลบรารีสิ่งนี้มีประโยชน์มากในการแยกแหล่งที่มาของข้อยกเว้น