【发布时间】:2010-09-06 15:15:30
【问题描述】:
ICommunicationObject 上的 Close 方法可以抛出两种类型的异常,如 MSDN 概述的 here。我理解为什么Close 方法可以抛出这些异常,但我不明白的是为什么服务代理上的Dispose 方法调用Close 方法而没有try。您的Dispose 方法不是您要确保不抛出任何异常的地方吗?
【问题讨论】:
标签: wcf web-services
ICommunicationObject 上的 Close 方法可以抛出两种类型的异常,如 MSDN 概述的 here。我理解为什么Close 方法可以抛出这些异常,但我不明白的是为什么服务代理上的Dispose 方法调用Close 方法而没有try。您的Dispose 方法不是您要确保不抛出任何异常的地方吗?
【问题讨论】:
标签: wcf web-services
这似乎是 .NET 代码中的一种常见设计模式。这是来自Framework design guidelines的引用
考虑提供方法 Close(),除了 Dispose(),如果 close 是该领域的标准术语。这样做时,务必使 Close 实现与 Dispose 相同...
这里是blog post,您可以在其中找到此 System.ServiceModel.ClientBase 设计问题的解决方法
【讨论】:
是的,通常 Dispose 是您要确保不引发异常的地方之一。但是,基于此 MSDN forum thread,此行为有一些历史原因。因此,推荐的模式是 try{Close}/catch{Abort} 范例。
【讨论】: