2017-04-03 42 views
1

我一直在試圖爲我的程序編寫一個外部類庫。這將成爲一個更容易實現的全局異常處理程序。我看過this question here。我已經在我自己的項目代碼中實現了自己。現在我的目標是將這些代碼粘貼到一個可以實例化的庫中,以便它可以輕鬆處理異常,而無需任何麻煩。通過類庫的全局異常處理程序 - 公開MyApplication?

Private Sub MyApplication_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) Handles Me.UnhandledException 

End Sub 

以上是我的主要形式的處理程序。現在,在類庫中,當調用New()時,如何創建處理程序?我試着加入一個參數,如m As My.MyApplication,但是我得到這個錯誤:雖然我知道這是一個長鏡頭

'm' cannot expose type 'MyApplication' outside the project through class 'xxx'.

,我完全不知道自己。

任何人都可以指導我如何處理這個問題嗎?

親切的問候, Alex。

+0

你仍然有問題解決嗎?我沒有聽到你的任何消息...... :) –

+0

@VisualVincent抱歉,是的,我已經標記了你的答案。你已經解決了我的問題 - 歡呼聲:) –

回答

1

如果您使用AppDomain.UnhandledException event而不是您將能夠這樣做。它是整個.NET Framework的一部分,不僅僅是Visual Basic。

Public Sub AppDomain_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) 
    Dim ex As Exception = DirectCast(e.ExceptionObject, Exception) 
    'Do your logging of 'ex' here. 
End Sub 

在代碼中的其他部分:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf <some class here>.AppDomain_UnhandledException 
+0

使用這個,我不必提供參數給'New()',我可以使用它,它會自動檢測應用程序?對不起,在這方面有點不熟悉。 –

+0

@AlexM。 :是的。它將捕獲當前應用程序域(appdomain)中未處理的異常。每個.NET應用程序及其引用的DLL都運行在同一個AppDomain中。 –

+0

@AlexM。 :有關詳細信息,請參閱MSDN上的[**應用程序域**](https://msdn.microsoft.com/en-us/library/2bh4z9hs(v = vs.110).aspx)。 –