我正在開發一個winforms應用程序,我想知道什麼是異常處理的最佳做法。每當發生異常時,我打開一個異常對話框,顯示必要的信息,即消息和堆棧跟蹤。我所遇到的主要困惑是,如果我希望用戶只看到友好的消息,但同時確保開發人員能夠獲得調試所需的數據。做這個的最好方式是什麼?異常處理和用戶友好的消息
2
A
回答
2
我沒有親自使用它,但Red Gate's Exception Hunter看起來像一個很酷的工具。您最好的選擇可能是將錯誤記錄到磁盤,以便在有人需要查看時提供該錯誤,但不會以用戶的方式出現。如果你願意,你可以打開一個窗口,要求用戶通過你的網站向你提交異常信息和堆棧跟蹤信息(只需單擊確定)。避免發送私人信息,這可能意味着不發送參數值。
編輯:哦,避免說「異常和堆棧跟蹤」。說「發生了錯誤,但在您的幫助下,我們可以更快地修復它,您是否希望現在自動將錯誤信息發送給____?請注意,錯誤報告中不會傳輸任何個人信息,您可以點擊'詳細信息'以顯示報告的完整信息。「如果他們點擊詳細信息,則垂直展開窗口以顯示包含數據的只讀文本框。
0
catch (Exception ex)
{
cApp.DB.LogException(ex);
Messagebox.Show(...);
}
的cApp.DB.LogException(ex)
記錄到數據庫表,除非數據庫關閉然後將其添加到一個文本文件中。
0
我有一個實用程序方法,我用在WinForms中編寫的實用程序中。隨着一點點的關心,它可能會在生產的WinForms應用中是有用的(讓專家沒有放過他們的批評):
便利重載:
private void PerformUIAction(Action action)
{
PerformUIAction(action, (string) null);
}
private void PerformUIAction(Action action, string message)
{
PerformUIAction(action,() => message);
}
真正的一個:
private void PerformUIAction(Action action, Func<string> messageHandler)
{
var saveCursor = Cursor;
Cursor = Cursors.WaitCursor;
try
{
action();
}
catch (Exception ex)
{
MessageBox.Show(
messageHandler() ?? ex.Message,
"Exception!",
MessageBoxButtons.OK,
MessageBoxIcon.Error,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
// Replace with logging code. The important part is ex.ToString(),
// not ex.Message
Debug.WriteLine(ex.ToString(), "Exception");
throw;
}
finally
{
Cursor = saveCursor;
}
}
例使用:
private void _samplesMenu_AfterSelect(object sender, TreeViewEventArgs e)
{
PerformUIAction(
delegate
{
// Do the real work of the event in here.
// You can reference sender and e
},
delegate
{
return string.Format(
"Error while processing action {1} for node {0}",
e.Node.FullPath, e.Action);
});
}
0
感謝您的回答......我猜在一些傾銷堆棧日誌文件,並顯示用戶唯一友好的信息將在我的情況:)
相關問題
- 1. 給用戶友好的異常消息
- 2. 向用戶顯示友好的消息
- 3. 處理jsf中的異常消息
- 4. 異常處理輸出消息
- 5. 很好的異常處理
- 6. 處理任意異常,打印默認異常消息
- 7. 異步處理消息框
- 8. 添加用戶定義的異常和異常處理程序
- 9. 駱駝最佳做法,消息和異常處理
- 10. NServiceBus異常處理和消息重試機制
- 11. 在.NET應用程序「異常處理消息」中的Vista異常
- 12. 使用JSON和jQuery MVC3中的異常處理和狀態消息
- 13. 自定義異常處理和客戶
- 14. 異常消息
- 15. 來自模型級驗證的用戶友好的消息
- 16. 用休息CXF處理異常
- 17. Axis2:處理用戶定義的異常
- 18. JPA中更好的異常處理
- 19. 如何在用戶友好的消息中更改UnsupportedClassVersionError?
- 20. 用戶友好的消息與http狀態代碼500
- 21. 持續或更新期間用戶友好的驗證消息
- 22. 避免第一次機會異常的消息時,異常安全處理
- 23. 客戶端錯誤異常的消息
- 24. WCF例外的用戶友好信息
- 25. 用異常消息測試異常消息
- 26. Akka的演員異步消息處理
- 27. 如何讓LINQ到SQL中刪除異常信息對用戶更友好
- 28. PHP的異常處理設置消息之後
- 29. 在Apache駱駝中修改處理的異常錯誤消息
- 30. Java中消息驅動bean的異常處理
這是不同於簡單的嘗試趕上?您正在將一種語言結構更改爲另一種語言以產生相同的效果。 – nawfal 2013-02-01 20:20:04