我可以在堆栈跟踪中抛出一些文本吗?
我的应用程序已经掌握了抛出的异常。但想了解更多有关某些方法(参数)的信息。
这个想法是做类似的事情
StackTrace.Insert (0, "argument:" + test);
我知道这并不酷,但有可能吗?
我可以在堆栈跟踪中抛出一些文本吗?
我的应用程序已经掌握了抛出的异常。但想了解更多有关某些方法(参数)的信息。
这个想法是做类似的事情
StackTrace.Insert (0, "argument:" + test);
我知道这并不酷,但有可能吗?
创建异常,并将参数放在数据字典属性中。然后抛出异常...
只是为了添加到@erikH 的出色答案:
除了使用该Data
属性之外,如果您需要异常链上的其他可用数据,您可以通过自定义异常来实现。除了自定义类型可以提供的元信息(CommunicationException
可能意味着 I/O 问题,InvalidStateException
可能意味着程序遇到无效状态等)之外,您还可以向异常添加附加信息,其形式为自定义字段。当您需要Data
属性不提供的类型安全时,自定义字段特别有用。
根据定义,堆栈跟踪是程序中当前执行点的活动堆栈帧的输出,通常通过异常访问。
@David Yaw 为您提供了将附加信息添加到堆栈跟踪的正确方法,因为它会使异常堆栈冒泡。换句话说,您应该只将自定义数据添加到堆栈跟踪,当它是异常的结果时。
要么创建一些可集中访问的 List 集合来存储日志数据,要么按照 David 的建议使用适当的 try/catch 和异常冒泡。
例如。
try
{
doSomethingThatMightFailAndThrowAnException();
}
catch (Exception ex)
{
throw new Exception("Here is some custom data to add to the trace...",ex);
// Notice adding the ex as the second parameter preserves the original exception trace
}