【问题标题】:C# MessageBox Error MessagesC# MessageBox 错误消息
【发布时间】:2011-02-16 21:29:41
【问题描述】:

在我的应用程序中,我使用消息框来显示错误信息。

try
{
   // Something...
}
catch (SystemException ex)
{
   MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

一开始这很好,但是随着我的程序的增长,找到产生这个错误的 try-catch 块变得越来越困难。有没有办法显示产生错误的代码行或函数?我正在使用 Microsoft Visual C# 2008 Express Edition。谢谢。

【问题讨论】:

  • 在显示错误框的情况下,您通常希望向用户隐藏凌乱的细节(如 StackTrace)。但是,我强烈建议您将异常记录在某处(使用 StackTrace),以便稍后对其进行调试。有几个不错的日志记录包,例如 NLog 或 Log4Net,您可以使用它们来帮助解决此问题。

标签: c# debugging error-handling messagebox


【解决方案1】:

这将为您提供有关导致错误的方法(堆栈跟踪)的大量信息

MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

【讨论】:

    【解决方案2】:

    只需显示Exception.StackTrace。它将包含各种有用的信息,可以帮助您找到有问题的代码行。

    【讨论】:

      【解决方案3】:

      Exception.StackTrace,对于消息框来说通常有点多。 Exception.TargetSite.Name 也应该有帮助。

      【讨论】:

        【解决方案4】:

        您想查看 ex.StackTrace(),它将为您提供引发异常位置的完整详细信息。您可能还想检查 InnerException。

        【讨论】:

          【解决方案5】:

          您为什么不在错误消息中添加一些额外的信息,以便您更轻松地找到它?您可以在“错误”字符串之后添加更多文本,具体取决于创建消息框的位置。

          抛出的异常包含多个函数,可让您获得更详细的错误解释。

          【讨论】:

          • 我不想为每个可能的 catch 块想出一个新的错误消息(我可能永远不会看到)。
          • 我的意思是使用 ex.ToString(),而不是手动添加文本。
          【解决方案6】:

          您可以使用一些选项。

          1. 如果您想提供上下文信息,请在消息框中输入一些内容
          2. 显示堆栈跟踪信息,如果在调试中包含构建行号

          但是,我会谨慎对待这种做法,如果你发现你得到的太多并且你不知道在哪里,我会开始考虑重新构建你的代码以确保你没有问题。

          【讨论】:

          • 我不想为每个可能的 catch 块想出一个新的错误消息(我可能永远不会看到)。
          猜你喜欢
          • 1970-01-01
          • 2016-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-29
          相关资源
          最近更新 更多