2011-12-14 95 views
-1

如果在IEditableObject.EndEdit中引發異常(使用綁定從WPF Datagrid設置時)。框架捕獲IEditableObject.EndEdit中的異常

該框架捕捉到該異常,並且該消息顯示在控制檯「類型'System.NullReferenceException'的第一個機會異常」中。

我實際上喜歡這個異常更明確,因爲我使用DispatcherUnhandledException和AppDomain.CurrentDomain.UnhandledException「處理」所有未處理的異常。在關閉應用程序之前,我在哪裏登錄異常並通知用戶。

我是否需要使用某種黑客技巧,比如向每個EndEdit添加try-catch並使用Application.Dispatcher重新拋出異常?

+0

什麼是你綁定到`DataGrid.ItemSource`? – 2011-12-14 13:16:43

回答

0

以下是我最後做

public class Editable : NotificationObject, IEditableObject 
{ 
... 
    public void EndEdit() 
    { 
      try 
      { 
       ... 
      } 
      catch (Exception e) 
      { 
       ExceptionUtils.ThrowOnUIThread(e); 
      } 
     } 
    } 
} 


public static class ExceptionUtils 
{ 
    public static void ThrowOnUIThread(Exception exception) 
    { 
     exception.PreserveStackTrace(); 
     Application.Current.Dispatcher.BeginInvoke(new Action(() => { throw exception; })); 
    } 
} 

關於PreserveStackTrace看到這個question