gpt4 book ai didi

.net - 使 .NET 断言在发布版本中抛出异常

转载 作者:行者123 更新时间:2023-12-01 10:04:03 26 4
gpt4 key购买 nike

我们的代码中有一堆 .NET 断言,我们从未见过它们失败。如果由于某种原因断言确实失败了,我们宁愿终止进程并生成故障转储,也不愿破坏我们用户的数据。

我们已将所有架构设置为在未处理的异常时创建内存转储,因此我们希望我们的断言在发布版本中以这种方式运行。有没有一种方法可以巧妙地做到这一点,或者我们只需要用一些其他断言然后抛出的函数替换我们所有的 Assert 调用?

最佳答案

一种选择是使用 Trace.Assert而不是 Debug.Assert。

来自 MSDN 页面的备注部分:

Use the Trace.Assert method if you want to do assertions in release builds. The Debug.Assert method works only in debug builds.

编辑:回应评论:

Trace.Assert 存在的原因是提供与 Debug.Assert 相同的功能,但在生产构建中。您应该能够使用与 Debug.Assert 上的故障转储相同的基础结构,但您必须引用 Trace 而不是 Debug。来自 MSDN 文章 Assertions in Managed Code :

For example, you could override the TraceListener.Fail method to write to an event log instead of displaying the Assertion Failed dialog box.

在您的情况下,您可能会重用您今天使用的相同 TraceListener(可能 - 除非您这么说,否则我不知道)生成故障转储。唯一的区别是您将其添加到 Trace.Listeners而不是 Debug.Listeners .

关于.net - 使 .NET 断言在发布版本中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12682432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com