2012-10-16 94 views

回答

3

首先,您需要捕獲未處理的異常。這段代碼的VB.Net版本添加到您的主程序:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
Application.ThreadException += ApplicationThreadException; 
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; 

然後添加事件處理程序:

static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) 
{ 
    Exception ex = e.ExceptionObject as Exception; 
    if (ex != null) 
    { 
     Console.WriteLine("Unhandled exception: {0}", e.Exception);  
    } 
} 

static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e) 
{ 
    Console.WriteLine("Unhandled application exception: {0}", e.Exception); 
} 

然後你就可以與您所選擇的日誌記錄方法的錯誤。(對不起, !C#代碼)

+0

如果我使用try catch @表單級別,那麼我必須在catch塊中編寫代碼才能執行上面的代碼? – andy

+2

如果您使用try/catch,只需將日誌記錄代碼添加到catch代碼塊中即可獲取**未處理的**異常,即那些未在try/catch塊中捕獲的異常。 – stuartd

2

在你Sub Main,或爲您啓動窗體構造函數中,添加以下代碼:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler 

然後,添加下面的方法你Sub Main,或將其添加爲一個共享的方法在任何其他類/形式:

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) 
    If TypeOf e.ExceptionObject Is Exception Then 
     Dim ex As Exception = CType(e.ExceptionObject, Exception) 
     ' Log the exception 
    End If 
End Sub 
1

如果你想要的東西記錄,使用NLOG - 這將日誌消息寫入文件,電子郵件等。 鏈接: http://nlog-project.org/

的文檔: https://github.com/nlog/nlog/wiki/Tutorial

然後,你可以簡單地這樣做:

Private Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger 
try 
'do stuff 
catch 
logger.fatal("Messagedescription") 
end try 

這會自動填寫您的留言在nlog.config文件 指定的文件查看日誌可以使用任何我喜歡的編輯器或logExpert。

相關問題