在 try..catch 中获取 Exception 对象以包含完整的堆栈跟踪,目前它已被截断

2024-03-22

我试图在 try..catch 的 catch 中获取完整的堆栈跟踪。目前它已被截断为仅包含出现错误的当前方法。

让我解释。目前我的堆栈跟踪包括发生错误的方法“第三”,但不包括第一和第二,我相信这是设计使然。

private void First()
{
    this.Second();
}

private void Second()
{
    this.Third();
}

private void Third()
{
    try
    {
        throw new SystemException("ERROR HERE!");
    }
    catch (Exception ex)
    {
        // I WILL LOG THE EXCEPTION object "EX" here ! but ex.StackTrace is truncated!
    }
}

我已经看到了许多在 STRING 中获取完整堆栈跟踪的技巧,但问题是我的日志记录框架需要一个“Exception”类型的对象,但我的异常变量(ex)是有效的,但属性 StackTrace 被截断。

无论如何,我是否可以收到带有完整堆栈跟踪的完整异常,这样我仍然可以发送我的“EX”,但这次它将有一个未截断的堆栈跟踪。

UnhandledError 事件似乎工作得好像我到达这里,异常有一个堆栈跟踪并且已完全填充。


string fullStackTrace = exception.StackTrace + Environment.StackTrace;

当前方法可能会添加两次,如果是这样,请从属性之一中删除一行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 try..catch 中获取 Exception 对象以包含完整的堆栈跟踪,目前它已被截断 的相关文章

随机推荐