ใน C ++ คุณสามารถระบุว่าฟังก์ชันอาจมีหรือไม่มีข้อยกเว้นโดยใช้ตัวระบุข้อยกเว้น ตัวอย่างเช่น:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
ฉันสงสัยเกี่ยวกับการใช้งานจริงเนื่องจากสิ่งต่อไปนี้:
- คอมไพเลอร์ไม่ได้บังคับใช้ตัวระบุข้อยกเว้นอย่างเข้มงวด แต่อย่างใดดังนั้นประโยชน์จึงไม่มาก ตามหลักการแล้วคุณต้องการรับข้อผิดพลาดในการคอมไพล์
- หากฟังก์ชันละเมิดตัวระบุข้อยกเว้นฉันคิดว่าพฤติกรรมมาตรฐานคือการยุติโปรแกรม
- ใน VS.Net ถือว่าการโยน (X) เป็นการโยน (... ) ดังนั้นการยึดมั่นในมาตรฐานจึงไม่แข็งแรง
คุณคิดว่าควรใช้ตัวระบุข้อยกเว้นหรือไม่?
โปรดตอบด้วย "ใช่" หรือ "ไม่" และระบุเหตุผลบางประการเพื่อให้เหตุผลสำหรับคำตอบของคุณ