C ++中的异常调用堆栈
收藏

今天,在我的C ++多平台代码中,我对每个函数都有尝试。在每个catch块中,我都将当前函数的名称添加到异常中,然后再次抛出该异常,以便在最上面的catch块中(我最终在其中打印异常的详细信息),我拥有完整的调用堆栈,这有助于我追踪异常的原因。

这是一个好习惯,还是有更好的方法来获取异常的调用堆栈?

最佳答案

不,这非常可怕,我不明白为什么异常本身需要调用堆栈-我发现发生异常的原因,行号和文件名足以应付初始异常。

话虽如此,如果您确实必须具有堆栈跟踪,那么要做的就是在异常抛出站点生成一次调用堆栈信息。没有任何一种可移植的方式来执行此操作,但是将诸如http://stacktrace.sourceforge.net/之类的东西与VC ++相结合并使用类似的库并不难。

    公众号
    关注公众号订阅更多技术干货!