我有一个广泛使用MFC的应用程序。每当MFC内部断言失败时,我的用户只是得到一个无用的"遇到不适当的参数"弹出。我想在这些问题期间添加额外的日志记录,以更好地帮助跟踪实际问题,所以我想利用CWndApp::ProcessWndProcException。然而,我不知道如何从异常中获取任何信息,而不是"遇到不当的参数",这只是MFC产生的默认消息。在此消息期间是否有方法获取调用堆栈信息(或异常起源)?
CException不保留catch语句的调用堆栈信息。
你可以从CException中派生一个类型,为堆栈跟踪字符串添加额外的字段,为原始异常添加InnerException,然后用catch处理程序包装异常抛出代码,该处理程序在堆栈遍历后重新抛出包装器异常。