结论
开门见山的说,.Net Core
无法捕捉在C/C++
编写的Dll中的方法的异常和错误。
说明
在.Net Framework
框架期间,可以通过为方法增加特性:HandleProcessCorruptedStateExceptionsAttribute
,或者使用RuntimeWrapperException
捕捉运行时的错误,
但是在.Net Core
框架中,上述特性已经不再生效了,即使它的状态是弃用状态而不是删除掉。
事实上,没有删除它的原因仅仅只是为了.Net Core
对.Net Framework
的兼容性保留。
但是这个特性已经不生效了。
因此,RuntimeWrapperException也失去了捕捉从C/C++中抛出的运行时异常和错误的能力。
解法
一个合理且规范的解决方案是,不要再考虑通过异常来连接C#和C,而是通过方法的返回值来实现。
比如返回1是正常,2是错误,以此类推。
这势必会增加在C/C++中的代码量,但,总比AspNetCore
服务直接崩溃来的划算。
当然,通常遇到的情况是,你所使用的C++包是第三方的,那我只能说,寄。
标签:Core,错误,C++,捕捉,Net,异常 From: https://www.cnblogs.com/rocael/p/17911031.html