[英]How can I throw an unknown exception in c++?
我有一个类似于报告的问题:
http://social.msdn.microsoft.com/Forums/lv/windbg/thread/52000403-db16-4f33-9b38-dae79d9ba038
由于文件路径的原因,Adplus无法为未知异常生成完整转储文件
我们得到一个SecondChance _ * _ UnknownException,adplus尝试(并且失败)作为文件名的一部分。
我想尝试类似于链接中建议的更改,但我想测试adplus可以为我创建转储文件。
所以,问题是,“如何在c ++中抛出未知异常?”
更新:请参阅下面的MSalters评论,并展示如何创建未知异常
此外,为了将来参考,我正在添加我的adplus配置文件,该文件可以执行完全转储,并且文件名中没有星号问题。
<ADPlus Version='2'>
<KeyWords>
<KeyWord Name="MyActF">
.dump -u /ma ${AdpDumpDir}\FULLDUMP_FirstChance_UnknownException_${AdpProcName}_.dmp
</KeyWord>
<KeyWord Name="MyActS">
.dump -u /ma ${AdpDumpDir}\FULLDUMP_SecondChance_UnknownException_${AdpProcName}_.dmp
</KeyWord>
</KeyWords>
<Exceptions>
<Exception Code="epr">
<Actions1>Void</Actions1>
<Actions2>Void</Actions2>
</Exception>
<Exception Code="bpe">
<Actions1>FullDump</Actions1>
<Actions2>FullDump</Actions2>
</Exception>
<Exception Code="*">
<Actions1>Log;Stack;Void</Actions1>
<Actions2>Log;Stack;MyActS</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
</Exceptions>
</ADPlus>
一些注意事项:此文件不会在epr进程关闭时创建转储,它会在“bpe”上执行完全转储,并且对“转储 ”进行特殊处理, 因此adplus不会尝试创建文件名。 我可能倾向于仅对第二次机会未知异常进行完全转储...在Actions1 for Exception Code =“ ”下可以根据您是要完全转储还是不转储来放置MyActF或Void。
“第二次机会”意味着您可能正在处理结构化异常处理(Win32),而不是C ++异常。 通过RaiseException()
抛出SEH异常。 它的第一个参数是异常代码,例如0xC0000005
。 显然,并非所有40亿个可能的值都有名称。 任何没有名称的值都是“未知”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.