【问题标题】:Thrown exception details抛出的异常详细信息
【发布时间】:2014-05-01 08:09:42
【问题描述】:

当我的应用程序失败时,catch 块会显示一个带有异常堆栈跟踪的消息框,以便我可以轻松查看失败的行数。
try 块包括调用其他方法的 main 方法。

catch (Exception e)
{
    DetailsTextBox.Text = e.StackTrace;
}

有时,来自另一个类(不是主类)的方法会失败。
由于我想显示相同的消息框,因此我从那里的 catch 块将异常抛出到主类:

catch (Exception ex)
{
    throw (ex);
}  

我的问题:
现在堆栈跟踪显示的行号是我抛出异常的行,而不是应用程序失败的行。

有什么想法吗?

【问题讨论】:

  • 你应该只使用throw 而不是throw (ex),因为那样会丢失堆栈跟踪。
  • 或者,最好不要捕获你不会处理的异常。
  • @DanielKelley。谢谢。而已!将其发布为答案,以便我可以将其作为选定的答案。

标签: c# exception stack-trace


【解决方案1】:

您应该只使用throw 而不是throw (ex),因为那样会丢失堆栈跟踪。

但是,正如 John Saunders 指出的那样,您最好不要一开始就捕获异常,尽管在某些情况下这可能很有用。

【讨论】:

  • 不明白为什么我不能抛出异常,因此可以访问我创建的用于显示异常详细信息的自定义表单的类使用此表单来显示详细信息。由于某种原因,向主类抛出异常的类不能使用我提到的这种形式,因为有问题的重复关系。说得通?再次感谢。
猜你喜欢
  • 2013-06-18
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多