上周我访问了荷兰的 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/