WCF:在生产中使用或不使用服务到客户端的异常?任何替代?

时间:2012-05-10 20:42:55

标签: wcf exception-handling

我在考虑使用从服务到客户端的一些例外。

在这种情况下,我正在思考。客户端尝试在数据库中插入寄存器。该寄存器具有存储在数据库中的e字段的值,以及它如何具有唯一约束,当我执行savechanges时,我得到updateException。

我正在考虑使用异常(faultException)来警告客户端错误,并使用自定义类向客户端发送寄存器的实际数据,这样客户端就不会进行其他查询登记册。

然而,在这个link中,它说只有异常应该用于开发,而不是生产,所以,没有例外,我怎么能做我想做的事情?

也许我可以使用一个自定义类,它对每种类型的实体都有一个列表属性,以及一个属性bool,它指示操作是对还是错,其他属性带有任意代码来指示错误类型。 ..等等这是一个很好的选择吗?

总之,在生产中避免异常真的更好吗?我如何与服务中的客户端错误沟通?

1 个答案:

答案 0 :(得分:1)

您有两个选择:

  • 抛出异常并返回WCF错误
  • 将错误信息附加到您的返回对象

我个人赞成抛出异常并返回WCF错误。我不喜欢将错误信息附加到返回对象的想法,我觉得它violoates面向对象的主体。例如,名为“ErrorCode”的字段在“CustomerAddress”对象上没有位置。

我相信如果出现特殊情况,那么就应该抛出异常。这也将简化您的代码,因为您不必将所有内容包装在try catch块中,以便将错误信息附加到返回对象。虽然您可能希望捕获意外的异常,然后使用更有用的消息抛出更合适的异常。