.net - 如何处理运行时代码契约违规

标签 .net error-handling code-contracts

上周我访问了荷兰的 devday11,了解了 Code Contract。我正在考虑实现代码契约,但我仍然不清楚以下内容。我应该如何处理应用程序中的运行时代码契约违规?

例如,我的应用程序中有一个层使用空值调用另一个层。调用的函数有一个必需的联系人,因此它会抛出契约(Contract)验证错误。这应该如何处理?所以像这样

public string GetOrderSomething(OrderModel order)
{
 Contract.Requires(order != null);
 // jibidi jibeda do something
 }  

//other application layer
private void something()
{
 Class.GetOrderSomething(null);
}

应该做什么?我应该用正常的 try catch 处理它,还是根本不处理它?我应该做一些“特别”的事情吗?

最佳答案

对于这种情况,您应该执行通常情况下会执行的操作

如果(订单==空){ 抛出新的 ArgumentNullException(); }

此 CodeContract 并不意味着该类已不稳定,只是您向该方法传递了错误的参数...

但是,如果这是某个内部成员的 Requires 并且您知道它永远不应该为空,那么那就是另一个故事了。您将有一个永久无法工作的类,如果您无法通过捕获“修复它”,那么可能应该引发一些致命异常并发出警报。

关于.net - 如何处理运行时代码契约违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847546/

相关文章:

haskell - 对于可靠的代码、NModel、Spec Explorer、F# 或其他?

c# - 如何根据某些参数加载不同的 RESX 文件

.net - 为什么此计时器不会在 .net 服务应用程序中启动?

java - 在 React Native Android 应用程序中通过 crashlytics 的堆栈跟踪找到崩溃是真的吗?

c# - 代码契约和类型转换

c# - 为什么 Marshal.DestroyStructure 被认为是 Pure?

.net - 在 Powershell 中使用 .NET 属性

c# - 混合模式程序集是针对旧版本的运行时构建的,如果没有额外的配置就无法加载

ios - 尝试打印错误(AKA ErrorType)枚举的描述

php - 为什么 php 的 mail() 函数发送邮件成功但字段为空?