簡體   English   中英

C#WPF未處理的異常:如何充分利用它

[英]C# WPF unhandled exception: how to make the most of it

我對WPF還是很陌生,但是發現AMAZING能夠捕獲任何未處理的異常。 我把

this.Dispatcher.UnhandledException += Dispatcher_UnhandledException;

在我的類的構造函數中。 這導致我陷入困境

private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
  e.Handled = true;
  ...
}

最初,它不起作用,但后來我看到要使其起作用,我必須在VS IDE發行版和外部運行它。 這樣行得通。

我想要的是盡可能多地了解導致異常的原因。 可能是異常類型,s / r,行以及提供的其他任何內容。

目前正在做

 int a = 0;
 int b = 3 / a;

並通過

MessageBox.Show(e.ToString() + "  " + sender.ToString());

我得到:

在此處輸入圖片說明

所以那不是正確的方法。

我知道我沒有在問題中添加必要的信息,但是我已經搜索了各種答案,但是沒有人報告我的需要。 如果是這樣,在關閉之前保存任何數據(而不是在關閉之前保存但不會檢測到導致異常的原因)可能很有用

當我離開時還有什么

Environment.Exit(-1)

我發現進程仍在運行,這是一個問題。 在這里,在發生未處理的異常后終止應用程序表示,我必須終止進程,這真的是在發生未處理的異常后關閉應用程序的正確方法嗎?

謝謝你的幫助

導致應用程序崩潰的實際異常包含在DispatcherUnhandledExceptionEventArgs參數中。

只需使用e.Exception即可掌握它。

MessageBox.Show(e.Exception.ToString());

顯示異常后,建議通過調用base方法允許應用程序繼續運行:

base.OnUnhandledException(sender, e);

您當然可以選擇將異常標記為已處理,但是在僅覆蓋此方法以顯示錯誤的情況下,我不會將其視為已處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM