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

时间:2015-12-04 03:24:59

标签: c# visual-studio

我与一群拥有Java和Eclipse背景的程序员一起工作。现在在我们使用C#代码工作的项目中,我几乎到处都看到这个代码,而且大多数时候都更大:

try{
    var result = WebService.GetUser("John Cena");
    MyLabel.Text = result.Username;
}
catch(Exception e){
    MessageBox.Show(e);
}
如果webservice崩溃(除非它是原子的),或者结果为null,

将失败。

我更喜欢VS编辑器中抛出的异常,而不是没有跟踪的消息框。我建议团队中的每个人都不要使用try catch块。主要是因为他们滥用它们。

我想听听一些关于应该/不应该处理异常的专业建议。

3 个答案:

答案 0 :(得分:3)

不,记录MessabeBox中的所有异常都是不好的做法。例如,您将获得NullReferenceException并将其显示给用户。什么?什么用户应该这样做?他知道吗,NullReferenceException是什么?他会得到什么有用的信息?零。 您必须在某些存储中记录所有例外,但仅显示" business"错误。例如:"您没有许可"等等。 NullReferenceException是非常低级别的例外,在消息框中显示它。

详细了解exception handling strategies

答案 1 :(得分:2)

记录消息框中的异常是丑陋的,不是用户友好的。

对于后端代码,我们喜欢这样;

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();
}

答案 2 :(得分:1)

  • 记录所有例外
  • 仅向用户显示标准错误消息
  • 还要确保将记录的消息通知给相关的技术组,该技术组可以是自动的(记录后)或用户报告(向用户提供“报告给管理员”的选项)