【发布时间】:2015-02-24 06:42:21
【问题描述】:
我正在处理的一个程序有一个适当地命名为“错误”的日志记录功能,可以在不使程序崩溃的情况下通知错误,但是,我想包含一个堆栈跟踪,以便可以更轻松地调试这些非致命错误。我的第一直觉是使用System.Diagnostics.StackTrace,不幸的是,这在 PCL 中不可用。
然后,我尝试抛出并及时捕获异常。
try { throw new Exception(); }
catch (Exception ex) { return ex.StackTrace; }
不幸的是,这仅提供了调用堆栈的顶部:由于它不会在向下的过程中解开堆栈,因此它不会提供任何有用的信息。所以,我的问题是:如何在 ac# PCL 函数中获取堆栈跟踪而不抛出错误并将其捕获到堆栈底部?我更愿意将代码完全保留在PCL 并避免对如此琐碎的事情使用抽象和特定于平台的实现代码。
编辑为对评论的响应:`throw new Exception(ex) 仅向堆栈跟踪添加另一层,因此堆栈跟踪函数中有两行但仍无法检索完整跟踪。
【问题讨论】:
-
我认为您在这里大多不走运。
ex.ToString()是否包含堆栈跟踪?你可能不得不这样做。或者throw new Exception(ex); -
前者不行,让我去试试后者,更新问题。
标签: c# debugging portable-class-library