2012-08-17 64 views
2

我在我的代码中使用第三方库。第三方库中的一种方法是从线程池获取一个线程并对其进行一些处理。不幸的是,它从它的线程抛出异常,我无法捕捉和处理,因为它来自不同的线程。由第三方库中的线程抛出的异常

我知道这个异常不会导致应用程序受到任何伤害(它不是一个内存不足的异常或任何类似的东西),所以我想记录它并在稍后可能成功时再次尝试操作。

我目前正在使用AppDomain UnhandledException事件记录异常,但我的应用程序仍在终止。有什么办法可以捕捉到这个异常并处理它吗?

回答

2

它真的很难在线程间捕捉异常,事实上我认为它是不可能的。

唯一的解决方法是查看他们的第三方库是否有可以通知您异常情况的回调例程。

检查图书馆的docs/api。

+0

我与0MQ这是一个线程库有此问题。他们终止而不是正确抛出异常,所以我会检查库的来源是否可用。 – FaddishWorm 2012-08-17 09:12:34

+0

+1。不可能。您可以使用'AppDomain.CurrentDomain.UnhandledException'事件来接收异常。但它不会阻止应用程序崩溃。但你可以至少从那里重新启动它。 ('的Process.Start()') – jgauffin 2012-08-17 09:31:00