2011-12-11 82 views
1

如何捕捉未處理的異常?如果我的所有代碼都包裝在try catch? 但發生的異常都是一樣的,應用程序崩潰...也許有一些一般性的建議?如何在windows phone 7應用程序中捕獲未處理的異常?

使用:

 try 
      { 
      ...my code 
      } 
     catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message.ToString(),"Error!",MessageBoxButton.OK); 
      } 

示例代碼是不存在的,因爲有一個很大的代碼,並做了很多事情......它看起來像某個地方發生了錯誤,但它在哪裏的try-catch不顯示和應用程序僅關閉...

地址:

var errorw = MessageBox.Show(e.ExceptionObject.ToString(), "error", MessageBoxButton.OK); e.Handled = true; 

和消息:參數不正確。

正如我們現在明白在哪裏和什麼參數給出是不正確的?順便說一下,當你回到應用程序的前一頁時,忘記寫出錯誤發生在你按回來時。

回答

3

,你會嘗試這樣

 // Code to execute on Unhandled Exceptions 
private void Application_UnhandledException(object sender,ApplicationUnhandledExceptionEventArgs e) 
{ 
    if (e.ExceptionObject is QuitException) 
     return; 

    if (System.Diagnostics.Debugger.IsAttached) 
    { 
     // An unhandled exception has occurred; break into the debugger 
     System.Diagnostics.Debugger.Break(); 
    } 

    //MessageBox.Show(e.ExceptionObject.ToString(), "Unexpected error", MessageBoxButton.OK); 

    var errorWin = new ErrorWindow(e.ExceptionObject, "An unexpected error has occurred. Please click Send to report the error details.") 
         {Title = "Unexpected Error"}; 
    errorWin.Show(); 
    //((PhoneApplicationFrame) RootVisual).Source = new Uri("/Views/ErrorWindow.xaml", UriKind.Relative); 

    e.Handled = true; 
} 

private class QuitException : Exception { } 

public static void Quit() 
{ 
    throw new QuitException(); 
} 
+0

什麼是ErrorWindow?修改的MessageBox? – LarryCrowne

+0

它喜歡報告錯誤,並顯示該錯誤 –

+0

放置ErrorWindow,MessageBox: var errorw = MessageBox.Show(e.ExceptionObject.ToString(),「error」,MessageBoxButton.OK); e.Handled = true; \t \t 而消息: 該參數不正確。 – LarryCrowne

1

總是有一本手冊。

UnhandledException event description。

+0

請在您的答案中發佈相關代碼,而不是僅僅鏈接到文檔。 –

1

您是否試過ExceptionStackTrace財產。它向您顯示拋出異常的位置。

catch (Exception ex) 
{ 
    MessageBox.Show(ex.StackTrace,"Error!",MessageBoxButton.OK); 
} 
+0

事實上並未顯示此事。應用程序立即關閉。 – LarryCrowne

1

請確保您在調試構建應用程序,而不是釋放模式。比,去VS調試 - 例外菜單,並檢查所有'投擲'列啓用。之後,用附加的調試器啓動應用程序。 此外,您可以逐步執行您的代碼。

0

嘿,你可以使用BugSense庫來捕獲數據,然後收集它! PS。我是創始人之一

-2

將您的代碼放在Try-Catch Block中。我也遇到了這樣的問題,但後來由異常處理方法處理。

try 
{ 

    // your code 

} 

catch (Exception ex) 
{ 

    throw (ex); 
} 
+0

我認爲用戶試圖在您的解決方案之外捕獲異常。 IE不屬於處理異常的所有異常。 –

+0

另外,問題的主體已經有了一個try/catch –

相關問題