Windows phone 8 捕获C+中未处理的异常+/CX

Windows phone 8 捕获C+中未处理的异常+/CX,windows-phone-8,windows-phone,Windows Phone 8,Windows Phone,是否可以在C++/CX中捕获未处理的异常?我发现,如果C++/CX中发生崩溃,我的应用程序将立即终止(应用程序未处理异常不会被调用)。此外,我发现Win32 api SetUnhandledExceptionFilter不可用,这是用于捕获未处理异常的Windows api。如果您所说的异常是指结构化异常,您可能应该使用u-try,例如类似这样的东西(下面未测试的代码): 或者,如果您试图处理C++异常,例如来自STL的异常,那么您应该用TestCcatch语句捕获它们,然后抛出Platform

是否可以在C++/CX中捕获未处理的异常?我发现,如果C++/CX中发生崩溃,我的应用程序将立即终止(应用程序未处理异常不会被调用)。此外,我发现Win32 api SetUnhandledExceptionFilter不可用,这是用于捕获未处理异常的Windows api。

如果您所说的异常是指结构化异常,您可能应该使用u-try,例如类似这样的东西(下面未测试的代码):


或者,如果您试图处理C++异常,例如来自STL的异常,那么您应该用TestCcatch语句捕获它们,然后抛出

Platform::Exception
,这样它们就会被正确地封送回托管代码中。

谢谢您的回答。但是如果运行类似“String*nulString=NULL;nulString->length();”这样的代码,我想找到一些方法来获得通知在C++/CX中导致崩溃,但不被TestCcatch包围。C++和C++只是太低的级别,它不是为这种欺骗而设计的。本机代码被称为“不安全”是有原因的:您完全有责任编写不在空指针上调用方法的代码。如果失败,任何事情都可能发生,包括但不限于数据损坏或安全问题。但是,如果您真的知道自己在做什么,请尝试__在此情况下,关键字应能防止崩溃。或者更好的是,指定<代码> /EHA < /Cuth>编译器标志,并使用<代码> Test{{} catch(…)<代码> C++语句-用这个标志<代码> catch(…)>代码>也应该捕获结构化异常。我最终通过使用解决了我的问题。你能举个例子吗?我有一个类似的问题,但我的_set_se_translator函数没有被调用。
__try
{
    someCode();
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
    throw Platform::Exception::CreateException( ... );
}