อย่างที่เราทราบดีว่าข้อยกเว้นคือสิ่งที่หมายถึงการหยุดชะงักของการไหลของโปรแกรมหรือแอปพลิเคชัน เหตุการณ์ที่ไม่ต้องการนี้เรียกว่า ข้อยกเว้น และโดยทั่วไปจะให้ข้อบ่งชี้เกี่ยวกับสิ่งผิดปกติภายในโค้ด โดยทั่วไปโดยเฉพาะอย่างยิ่งในภาษา C # ข้อยกเว้นอาจเป็นระบบหรือข้อยกเว้นระดับแอปพลิเคชัน เป็นหลัก
ซีเนียร์ เลขที่ | คีย์ | ข้อยกเว้นระดับระบบ | ข้อยกเว้นระดับแอปพลิเคชัน |
---|---|---|---|
1 | ที่มา | ข้อยกเว้นของระบบได้มาจากคลาสพื้นฐาน System.SystemException ซึ่งในตัวมันเองเป็นคลาสที่ได้รับของ SystemException | ในทางกลับกัน ข้อยกเว้นระดับแอปพลิเคชันนั้นได้มาจากคลาสพื้นฐาน System.ApplicationException ซึ่งเป็นคลาสที่ได้รับมาจาก SystemException อีกครั้ง |
2 | เกิดขึ้น | โดยทั่วไป ข้อยกเว้นของระบบเกิดขึ้นเมื่อพบข้อผิดพลาดที่ไม่สามารถกู้คืนหรือร้ายแรงได้ เช่น ฐานข้อมูลขัดข้อง ข้อผิดพลาดที่ผูกไว้ เป็นต้น | ในขณะที่ข้อยกเว้นระดับแอปพลิเคชันพบข้อผิดพลาดบางอย่างที่สามารถกู้คืนได้ เช่น ข้อมูลอินพุตผิดประเภท ข้อยกเว้นทางคณิตศาสตร์ ฯลฯ |
3 | การจัดการ | เนื่องจากข้อผิดพลาดในกรณีที่ข้อยกเว้นระดับระบบร้ายแรง ดังนั้นจึงไม่มีการส่งต่อสำหรับข้อยกเว้นประเภทนี้หรือวิธีการป้องกัน | ในทางกลับกัน เนื่องจากข้อยกเว้นระดับแอปพลิเคชันโดยทั่วไปจะได้รับการจัดการที่ระดับโค้ดโดยใช้บล็อก try-catch หากโค้ดไม่มีการบล็อก try and catch สำหรับข้อยกเว้นที่เกิดขึ้น โค้ดดังกล่าวจะเผยแพร่ไปยังระดับหน้าที่รูทีน Page_Error ใช้เพื่อจัดการกับข้อยกเว้น |
4 | การปรับแต่ง | ไม่รองรับการปรับแต่งข้อยกเว้นในกรณีที่มีข้อยกเว้นระดับระบบ | ในทางกลับกัน เราสามารถกำหนดและประกาศข้อยกเว้นระดับแอปพลิเคชันที่กำหนดเองได้ |
5 | รุ่น | ดังที่กล่าวไว้ในข้างต้น ข้อยกเว้นระดับระบบถูกส่งโดย .NET Common Language Runtime และใช้ในแอปพลิเคชัน .Net เกือบทั้งหมด | ในทางกลับกัน ข้อยกเว้นระดับแอปพลิเคชันเกิดขึ้นเมื่อเกิดข้อผิดพลาดที่กู้คืนได้ เช่น ค่าอาร์กิวเมนต์อินพุตที่ไม่ถูกต้องสำหรับวิธีการทางธุรกิจ จะแจ้งเตือนลูกค้าเกี่ยวกับปัญหาเฉพาะแอปพลิเคชันหรือตรรกะทางธุรกิจ |