首页 > 解决方案 > 我可以抛出非托管异常进行测试吗?

问题描述

我正在尝试编写一些代码来包装一个抛出非托管异常的 c++ 库。

仅出于测试目的,是否可以从 c# 代码生成非托管异常而无需创建假的 c++ 库替代?

标签: c#

解决方案


C# 编程指南指出“在 C# 中,您不能抛出非 CLS 异常”。这意味着您只能抛出源自 Exception 类的异常,即托管异常。您必须创建一个 c++ 库替代。

顺便说一句,同一页面还解释了如何捕获此类异常。但是,这仅适用于有问题的 c++ 代码实际上抛出异常 - 如果它是访问冲突,这将是一个无法捕获的损坏状态异常,请参阅此处了解更多信息。


推荐阅读