繁体   English   中英

在混合C ++中捕获std异常和系统异常

[英]Catch std exception and System Exception in mixed C++

在混合代码C ++应用程序中捕获std和System异常的正确方法是什么?

像这样?

try
{
    // using pure C++ and managed components
}
catch(std::exception exp)
{
}
catch(System::Exception sexp)
{
}

通过引用捕获异常。 对托管异常的硬性要求,对于本机C ++异常是可选的,但仍然是个好主意。 它拼写不同:

try {
    // stuff
}
catch (std::exception& ex) {
}
catch (System::Exception^ ex) {
}

然而,抓住所有异常处理几乎从来都不是一个好主意。

通过引用捕获它们以避免对std::exception派生异常进行切片:

catch (std::exception &exp)

这样您就可以正确捕获所有派生的异常。 (多态性)

请阅读 MS-Blog-Post。 具体来说,它说:“一般来说,托管代码中的本机错误/异常更容易处理反过来......”托管异常以SEH形式到达本机部分 - 异常与管理相比信息减少ecxeptions。

所以,不,你的代码片段不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM