将异常记录到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编辑器中抛出的异常,而不是没有跟踪的消息框。我建议团队中的每个人永远不要使用尝试接球挡块。主要是因为他们虐待他们。

我想听听一些关于如何处理例外情况的专业建议。

将异常记录到MessageBox中是一种很好的做法

否,在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();
}
  • 记录所有异常
  • 仅向用户显示标准错误消息
  • 此外,请确保将记录的消息通知给相关技术组,该技术组可以是自动的(记录后立即),也可以是用户报告(为用户提供"向管理员报告"之类的选项)