การประมวลผลข้อยกเว้น

เมื่อดำเนินการโปรแกรม เงื่อนไขที่ผิดปกติและข้อผิดพลาดในการเรียกว่า "ข้อยกเว้น" สามารถเกิดขึ้น สิ่งเหล่านี้อาจรวมถึงการทำงานออกจากหน่วยความจำ ข้อผิดพลาดในการปันส่วนทรัพยากร และความล้มเหลวในการค้นหาแฟ้ม?

ไลบรารี Microsoft Foundation Class ใช้แบบแผนการจัดการข้อยกเว้นที่เป็นแบบจำลองอย่างมากหลังจากที่เสนอ โดยคณะกรรมการมาตรฐาน ANSI สำหรับ c ++ การจัดการข้อยกเว้นต้องตั้งก่อนเรียกฟังก์ชันที่อาจพบสถานการณ์ที่ผิดปกติ ถ้าฟังก์ชันเกิดสภาวะข้อผิดปกติ จะเกิดข้อผิดพลาดข้อยกเว้น และตัวควบคุมจะถูกส่งไปที่ตัวจัดการข้อยกเว้น?

แมโครที่หลายที่รวมอยู่ในไลบรารี Microsoft Foundation Class จะติดตั้งตัวจัดการข้อยกเว้น ตัวเลขของฟังก์ชันอื่น ๆ ส่วนกลางช่วยการโยนข้อยกเว้นพิเศษ และจบการทำงานของโปรแกรม ถ้าจำเป็น แมโครและส่วนกลางฟังก์ชันเหล่านี้จัดอยู่ในประเภทต่อไปนี้:

สำหรับตัวอย่างและรายละเอียดเพิ่มเติม ให้ดูบทความ ข้อยกเว้นในVisual c ++ Programmer ของคำแนะนำ?

ข้อยกเว้นของแมโคร

ลอง แสดงว่าบล็อกของโค้ดสำหรับการประมวลผลข้อยกเว้น?
จับ แสดงว่าบล็อกของโค้ดสำหรับข้อยกเว้นจากบล็อกก่อนหน้าพยายามจับใจ?
CATCH_ALL แสดงว่าบล็อกของโค้ดสำหรับทั้งหมดยกเว้นจากบล็อกก่อนหน้าพยายามจับใจ?
AND_CATCH แสดงว่าบล็อกของรหัสสำหรับชนิดข้อยกเว้นที่เพิ่มเติมจากบล็อกก่อนหน้าพยายามจับใจ?
AND_CATCH_ALL แสดงว่าบล็อกของรหัสสำหรับชนิดอื่น ๆ ทั้งหมดยกเว้นเพิ่มเติมส่งออกไปในช่วงก่อนหน้านี้พยายามจับใจ?
END_CATCH สิ้นสุดการบล็อกโค้ดล่าสุดจับหรือAND_CATCH?
END_CATCH_ALL สิ้นสุดช่วงรหัสCATCH_ALLล่าสุด?
โยน เกิดข้อผิดพลาดมีข้อยกเว้นที่ระบุ?
THROW_LAST ข้อผิดพลาดในขณะนี้จัดการข้อยกเว้นเพื่อการจัดการภายนอกถัดไป?

ฟังก์ชันการโยนข้อยกเว้น

AfxThrowArchiveException เกิดข้อผิดพลาดข้อยกเว้นการเก็บถาวร?
AfxThrowFileException เกิดข้อผิดพลาดมีข้อยกเว้นของแฟ้ม?
AfxThrowMemoryException เกิดข้อผิดพลาดมีข้อยกเว้นของหน่วยความจำ?
AfxThrowNotSupportedException เกิดข้อผิดพลาดข้อยกเว้นที่ไม่ได้รับการสนับสนุน?
AfxThrowResourceException เกิดข้อผิดพลาดใน Windows ทรัพยากรไม่พบยกเว้น?
AfxThrowUserException ข้อผิดพลาดข้อยกเว้นในการกระทำของผู้ใช้โปรแกรม?

MFC มีสองฟังก์ชันที่โยนข้อยกเว้นสำหรับข้อยกเว้น OLE โดยเฉพาะ:

OLE ยกเว้นการทำงาน

AfxThrowOleDispatchException เกิดข้อผิดพลาดข้อยกเว้นภายในฟังก์ชันการทำงานอัตโนมัติของ OLE?
AfxThrowOleException เกิดข้อผิดพลาดข้อยกเว้น OLE?

รองรับฐานข้อมูลข้อยกเว้น คลาสที่ฐานข้อมูลให้สองข้อยกเว้นชั้นCDBExceptionและCDaoExceptionและฟังก์ชันที่ส่วนกลางเพื่อสนับสนุนชนิดข้อยกเว้น:

ฟังก์ชันยกเว้นดาว

AfxThrowDAOException ข้อผิดพลาดแบบCDaoExceptionจากรหัสของคุณเอง?
AfxThrowDBException ข้อผิดพลาดแบบCDBExceptionจากรหัสของคุณเอง?

MFC ให้เลิกจ้างฟังก์ชันต่อไปนี้:

ฟังก์ชันการเลิกจ้าง

AfxAbort เรียกว่าการจบการทำงานของโปรแกรมประยุกต์เมื่อมีข้อผิดพลาดร้ายแรงเกิดขึ้น?

ดูเพิ่มเติมnbspCException(&N)

Index