如何在C#中格式化Exception的堆栈跟踪?
显示exception时(或更常见 – 当它转换为String时)显示堆栈跟踪。 我想要做的是更改此类跟踪中显示的源代码文件路径的格式。
具体来说,我想只保留文件名(没有完整路径)或仅显示以项目基本目录开头的路径部分。 通常不需要完整路径并使整个消息混乱。
我怎样才能做到这一点?
我问了一个类似的问题,虽然不完全相同,但是: 在C#中打印堆栈跟踪信息 。
你能做的是:
var trace = new System.Diagnostics.StackTrace(exception);
它为您提供了一个StackTrace对象,为您提供所需的所有信息。 在我的情况下,它是关于避免必须处理本地化的exception文本,但我想你可以使用相同的方法来满足您的需求。
编辑 :我注意到我已经对我的问题的接受答案添加了注释,该问题与构造函数的“needFileInfo”参数有关。 我在这里看到这个构造函数: StackTrace(Exception e,bool fNeedFileInfo) ,我现在无法找到有问题的实际代码,但我猜你需要将true
传递给该参数。 我想实验是关键。
换句话说,我猜代码应该是这样的:
var trace = new System.Diagnostics.StackTrace(exception, true);
查看System.Diagnostics.StackFrame类和GetFileName方法。 您可以编写一个方法来获取堆栈跟踪以及可以在exception处理程序中调用的源文件的名称。
- 如何在ComboBox中使用Dictionary填充SelectedValue的值
- 如何为ASP.Net Web应用程序创建完整的安装程序
- 如何正确使用javascript反序列化将json字符串转换为复杂对象?
- OleDB连接到Microsoft Access数据文件的间歇性“超出系统资源”exception
- 在Visual Studio 2008中调试Web服务时,如何避免超时错误
- 我可以在C#中使用linq压缩if语句吗?
- Visual Studio打包:已安装此产品的另一个版本
- 使用配置文件中的字符串来初始化generics类型
- iTextSharp – 是否可以为同一个单元格和行设置不同的字体颜色?