【发布时间】:2019-06-11 10:30:44
【问题描述】:
我想在故障转储文件中添加信息,以防我的应用程序崩溃。
因此我创建了一个__try-__except 子句:
__try
{
Do_Something();
}
__except (ShowCrashdumpInformation(_T(__FUNCTION__));
我想添加更多信息,而不仅仅是__FUNCTION__,但我该怎么做呢?
最简单的方法是使用CString,但由于编译器错误C2712(不能在需要对象展开的函数中使用__try)而被阻止。
所以,我想使用LPCTSTR 字符串(在我的应用程序中广泛使用)。
因此它应该看起来像(CString 替代):
CString temp; temp.Format(_T("Do_Something, int=[%d], float=[%f], string=[%s]), iParam, fParam, strParam);
有人有想法吗?
谢谢
【问题讨论】:
-
__try不是标准的。可能是编译器扩展。您需要指定您使用的编译器以及为什么使用这些而不是标准的try catch -
@bolov 它是结构化异常处理,用于捕获 Windows 异常的 MSVC 扩展(例如 DivisionByZero)。 try/catch 不会捕捉到这些。
标签: c++ string visual-c++ type-conversion concatenation