2012-08-17 37 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