将异常记录到MessageBox中是一种很好的做法
本文关键字:一种 很好 记录 异常 MessageBox | 更新日期: 2023-09-27 18:25:45
我在一个团队中工作,团队中有一群有Java和Eclipse背景的程序员。现在,在我们使用C#代码的项目中,我几乎在任何地方都能看到这段代码,而且大多数时候都要大得多:
try{
var result = WebService.GetUser("John Cena");
MyLabel.Text = result.Username;
}
catch(Exception e){
MessageBox.Show(e);
}
如果web服务崩溃(除非是原子服务),或者结果为null,则上述操作将失败。
我更喜欢VS编辑器中抛出的异常,而不是没有跟踪的消息框。我建议团队中的每个人永远不要使用尝试接球挡块。主要是因为他们虐待他们。
我想听听一些关于如何处理例外情况的专业建议。
否,在MessabeBox
中记录所有异常是不好的做法。例如,您将获得NullReferenceException
并将其显示给用户。什么?用户应该做什么?他知道NullReferenceException
是什么吗?他会得到什么有用的信息?零您必须记录某些存储中的所有异常,但只显示"业务"错误。例如:"您没有权限"等等。NullReferenceException
是一个非常低级别的异常,显示在消息框中。
阅读有关异常处理策略的更多信息。
在消息框中记录异常是丑陋的,而且对用户不友好。
对于后端代码,我们确实喜欢这样;
try
{
DoSomething();
}
catch (Exception ex)
{
//Logs all details of the exception including full stack trace..
ExceptionManager.LogError("Exception occured on 'DoSomething' method", ex);
}
对于GUI;
try
{
DoSomething();
}
catch (Exception ex)
{
//Custom form to show all details of the exception
(new formExceptionHandller(ex, ex.Message)).ShowDialog();
}
- 记录所有异常
- 仅向用户显示标准错误消息
- 此外,请确保将记录的消息通知给相关技术组,该技术组可以是自动的(记录后立即),也可以是用户报告(为用户提供"向管理员报告"之类的选项)