![](/img/trans.png)
[英]C++ std::system_error usage with common catch std::exception block
[英]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.