如果發生任何未處理異常,我需要運行進程。未處理異常情況下運行進程
那麼有沒有辦法在應用程序中捕獲所有異常並在這種情況下創建一個進程?
更新(蒂姆):這是一個單一的形式的VB.NET應用程序,有幾個函數每個都拋出一個異常,每次都有一個不同的原因,所以我找不到一個解決方案,應用
如果發生任何未處理異常,我需要運行進程。未處理異常情況下運行進程
那麼有沒有辦法在應用程序中捕獲所有異常並在這種情況下創建一個進程?
更新(蒂姆):這是一個單一的形式的VB.NET應用程序,有幾個函數每個都拋出一個異常,每次都有一個不同的原因,所以我找不到一個解決方案,應用
(對於的WinForms)您需要訂閱ThreadException事件(你可以從你的 '主' 的方法做到這一點):
AddHandler Application.ThreadException, AddressOf OnThreadException
爲OnThreadException的簽名是:
Sub OnThreadException(ByVal sender As Object, ByVal t As System.Threading.ThreadExceptionEventArgs
如果您不介意,可否請您解釋一下,但更多的如何去訂閱部分。 和關於小組我應該把它放在窗體或其他地方? –
您需要在項目設置中禁用「激活應用程序框架」。然後創建一個新模塊並在其中放置一個Sub Main()。選擇這個子項目作爲你的項目的開始子項並從那裏運行你的應用程序。 – Jens
要訂閱,您只需指定一個方法(我使用「OnThreadException」,但您可以調用它),在發生事件(System.Windows.Forms.Application.ThreadException)時將調用該方法。您可以將該方法放在任何您想要的位置 - 您可能希望爲其創建一個類,然後實例化該類並傳遞該實例的方法 - 例如Dim myInstance As New UnexpectedExceptions&AddHandler Application.ThreadException,AddressOf myInstance.OnThreadException。 –
什麼樣的應用程序? WinForm的? ASP.NET?您應該能夠創建一個全局異常處理程序,但具體情況因應用程序而異。還是你想要捕捉應用程序範圍之外的未處理的異常?這是完全不同的情況。 – Tim
請檢查更新後的問題 –