我正在开发一个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. Yii完整性约束异常处理与用户友好的消息
- 3. Python请求异常处理:如何获取更详细的(用户友好的)错误消息?
- 4. 向用户显示友好的消息
- 5. 处理jsf中的异常消息
- 6. 这是处理异常消息的好方法吗?
- 7. 自定义(用户友好)ValidatorError消息
- 8. 使用JSP处理由Spring处理的异常显示消息
- 9. 获得一个“友好”的错误消息的异常
- 10. 异常处理输出消息
- 11. 如何操纵SQLEXCEPTION消息到用户友好的消息
- 12. 很好的异常处理
- 13. 金字塔所有友好的异常处理
- 14. 处理任意异常,打印默认异常消息
- 15. 良好地处理异常
- 16. 用户输入html时的用户友好消息
- 17. 如何处理Laravel 5中的异常和错误消息?
- 18. 异步处理消息框
- 19. 添加用户定义的异常和异常处理程序
- 20. 骆驼最佳做法,消息和异常处理
- 21. NServiceBus异常处理和消息重试机制
- 22. MVVM,Xaml,命令绑定,异常处理和消息框
- 23. 在.NET应用程序“异常处理消息”中的Vista异常
- 24. 使用JSON和jQuery MVC3中的异常处理和状态消息
- 25. PHP - 通用用户友好的错误消息
- 26. 自定义异常处理和客户
- 27. 来自模型级验证的用户友好的消息
- 28. 异常消息
- 29. 用户控制的异常处理
- 30. 处理用户输入的Java异常
这是不同于简单的尝试赶上?您正在将一种语言结构更改为另一种语言以产生相同的效果。 – nawfal 2013-02-01 20:20:04