เป็นไปไม่ได้ (ใน C ++) เพื่อตรวจจับข้อยกเว้นทั้งหมดในลักษณะพกพา นี่เป็นเพราะข้อยกเว้นบางอย่างไม่ใช่ข้อยกเว้นในบริบท C ++ ซึ่งรวมถึงสิ่งต่าง ๆ เช่นการหารด้วยศูนย์ข้อผิดพลาดและอื่น ๆ เป็นไปได้ที่จะแฮ็กและทำให้สามารถโยนข้อยกเว้นได้เมื่อเกิดข้อผิดพลาด แต่มันไม่ง่ายที่จะทำและแน่นอนว่าไม่ใช่เรื่องง่ายในการพกพา
ถ้าคุณต้องการจับข้อยกเว้น STL ทั้งหมดคุณสามารถทำได้
try { ... } catch( const std::exception &e) { ... }
ซึ่งจะช่วยให้คุณใช้e.what()
ซึ่งจะส่งกลับconst char*
ซึ่งสามารถบอกคุณเพิ่มเติมเกี่ยวกับข้อยกเว้นตัวเอง นี่คือโครงสร้างที่คล้ายกับโครงสร้าง Java ที่คุณถามถึงมากที่สุด
std::exception
นี้จะไม่ช่วยให้คุณถ้ามีใครพอโง่โยนข้อยกเว้นที่ไม่ได้รับมรดกจาก