3

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

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

在此处输入图像描述

我发现了许多类似的帖子,包括C# SocketException 没有被捕获,但我找到的答案都没有解决如何捕获异常,或者我是否应该担心它。

所以我的问题是:

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

2)如果是这样,我如何让系统捕捉到它们?

4

2 回答 2

2

您可以附加一个名为 AppDomain.FirstChanceException 事件的事件

这是您连接到它的方式:

  AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;

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

于 2012-05-23T12:48:17.013 回答
2

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

换句话说,不可能捕获第一次机会异常。

您也不必担心它们(通常)。

于 2012-05-23T12:48:24.820 回答