我正在使用蹩腳的第三方庫,因爲不幸的是我沒有選擇。當我調用它時,這個庫會在內部創建一堆線程,偶爾會在這些線程中的一個線程上拋出NullReferenceException異常。有沒有什麼辦法可以讓我捕捉到這些例外,即使我不擁有引發它們的線程?我無法更改第三方代碼。任何方式來捕捉我不擁有的線程上發生的異常?
舉一個簡單的例子來說明這個問題:
public static void main()
{
try
{
var crappyLib = new CrappyLibrary();
crappyLib.DoCrappyThings();
}
catch
{
Console.WriteLine("This never happens");
}
}
// I do not own the following code, I can't change it
public class CrappyLibrary
{
public void DoCrappyThings()
{
var t = new Thread(DoWork);
t.Start();
}
private void DoWork()
{
throw new ThisLibrarySucksException();
}
}
您是否可以在您使用的第三方代碼周圍使用'try ... catch'? –
是的,但異常不會傳播到調用線程。 – ConditionRacer
通常情況下,在.NET Web應用程序中,您有全局事件。asax - > void Application_Error(object sender,EventArgs e) - 您可以在其中捕獲應用程序中發生的所有錯誤。你有什麼類型的應用程序? – Coastpear