2012-10-30 31 views
0

我已經通過一些關於此主題的線索沒有成功。看起來,在我們的WPF應用程序的App.xaml.cs中,處理DispatcherUnhandledExceptions和AppDomain.CurrentDomain.UnhandledException不會捕獲所有內容。在棱鏡4模塊中處理異常

在這個特定的例子中,我們有7個棱鏡模塊。我的異常處理代碼是下面(幾乎爲相同UnhandledException):

private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
    { 
     try 
     { 
      var ex = e.Exception.InnerException ?? e.Exception; 
      var logManager = new LogManager(); 
      logManager.Error(ex); 


      if (!EventLog.SourceExists(ex.Source)) 
       EventLog.CreateEventSource(ex.Source, "AppName"); 
      EventLog.WriteEntry(ex.Source, ex.InnerException.ToString()); 

      var emb = new ExceptionMessageBox(ex); 
      emb.ShowDialog(); 
      e.Handled = true; 

     } 
     catch (Exception) 
     { } 
    } 

這個問題似乎是在模塊中發生的未處理的異常。 他們沒有被上面的代碼捕獲,它們導致應用程序崩潰而沒有記錄或顯示任何類型的消息。

有沒有人有這方面的經驗?

回答

2

這就是我們做了我們的棱鏡的應用程序捕獲異常(它捕獲幾乎所有):

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     try 
     { 
      App app = new App(); 
      app.InitializeComponent(); 
      app.Run(); 
     } 
     catch (Exception e) 
     { 
      // Log here 
      // Custom error message. 
     } 
    } 
} 

對於這個工作,你必須改變你的「啓動對象」是這個類。你可以在shell的項目屬性中做到這一點。

+0

這部分工作,所以我會給功勞。但是,在我的情況下,這並沒有捕獲模塊或並行任務拋出的異常。我們現在有很多嘗試捕獲。 – marcellscarlett