第一次机会SocketException被抛出但我的捕获不起作用

时间:2012-05-23 12:40:26

标签: c# wcf try-catch socketexception

我有一个WCF应用程序,有时会执行长时间运行的查询。我已经在客户端创建了代码,该代码了解套接字上的超时何时发生,并将采取措施稍后重新生成服务器以获取答案。系统会在TimeoutException发生之前抛出许多第一次机会异常,包括SocketException。在过去,第一次机会异常大大减慢了我的应用程序,直到我抓住并处理它们。

我想摆脱这些第一次机会异常,所以我创建了一个try-catch块来处理SocketException并打开VS2010中的异常并重新编写代码。当我这样做时,我看到调试器向我显示SocketException已经发生,但我的catch块从未进入过。 (见下文)

enter image description here

我发现了一些类似的帖子,包括C# SocketException doesn't get caught,但我找到的答案都没有解决如何捕捉异常,或者我是否应该担心它。

所以我的问题是:

1)我应该担心这些第一次机会异常吗?

2)如果是这样,我如何让系统抓住它们?

2 个答案:

答案 0 :(得分:2)

您可以附加一个名为AppDomain.FirstChanceException Event

的事件

这是你连接它的方式:

  AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;

它在应用程序域上运行的应用程序域是它上面的文档。 http://msdn.microsoft.com/en-us/library/system.appdomain.firstchanceexception.aspx

答案 1 :(得分:2)

第一次机会异常抛出已经捕获的异常。

换句话说,抓住第一次机会异常是不可能的。

你也不必担心(通常)。