gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:45:11 25 4
gpt4 key购买 nike

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

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

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”,但这次它将有一个未截断的堆栈跟踪。

UnhandledErrror 事件似乎正常工作,就好像我到达这里一样异常具有堆栈跟踪并且已完全填充。

最佳答案

string fullStackTrace = exception.StackTrace + Environment.StackTrace;

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

关于c# - 在 try..catch 中获取异常对象以包含完整的堆栈跟踪,目前它已被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com