【问题标题】:Get the actual StackTrace object from an Exception从异常中获取实际的 StackTrace 对象
【发布时间】:2017-04-20 06:27:30
【问题描述】:

Exception 对象上有一个 StackTrace 属性。但它只是一个字符串。

有没有办法从Exception 中获取实际的System.Diagnostics.StackTrace 对象?

我之所以问,是因为我从 UnhandledExceptionEventHandler 获取 Exception 对象,并且我无权访问生成异常的框架以获取实际的堆栈跟踪。

【问题讨论】:

  • 使用一些StackTrace constructorsException 参数?例如new StackTrace(ex).
  • This 问题似乎相关;如果为真,您的堆栈跟踪已经消失,您需要修复任何 throw ex 调用。请注意,如果是这种情况,那么@IvanStoev 的答案应该不起作用,因为ex 已经丢失了堆栈跟踪,所以我认为StackTrace 构造函数不会找到任何要复制的东西。请参阅here,了解如何在不丢失 .NET 4.5+ 中的堆栈跟踪的情况下重新引发异常。
  • @Quantic - 感谢您的回复,但 PALMERALE 和 IvenStoev 的解决方案似乎效果很好。

标签: c# .net exception stack-trace


【解决方案1】:
try{
//some code
}
catch (Exception ex){
   System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(ex);
}

【讨论】:

  • 完美运行!在ex 之后添加, true 也可以获得文件信息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2012-10-20
  • 2012-12-29
  • 2012-05-08
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
相关资源
最近更新 更多