我在c#应用程序中使用指纹捕获设备,该设备具有c ++ SDK类dll的包装类。 有时我得到一个c ++异常消息(见图),然后应用程序关闭,问题是我无法捕获此异常,并且无法在此异常后保持应用程序运行。 问题是:如何在C#中捕获此异常?
答案 0 :(得分:1)
如何在C#中捕获此异常?
你做不到。托管代码无法捕获非托管C ++异常。您需要在非托管代码中捕获非托管异常。您不能让非托管异常在非托管模块之外传播。
但是,错误对话框表明您遇到了更严重的问题。只能通过捕获异常来处理的问题。您将需要弄清楚为什么您的程序以这种灾难性的方式终止运行时,并阻止这种情况发生。该错误对话框表明您的program is calling abort()
,即终端。
换句话说,您需要首先防止此错误发生,而不是尝试从中恢复。这不是您希望从中恢复的错误。