我一直在编写 .NET 应用程序,并且对该框架中包含的错误处理印象深刻。
当捕捉到进程抛出的错误或代码中某处的错误时,我喜欢包含消息(ex.Message
,通常非常通用)以及堆栈跟踪(ex.stacktrace
) 这有助于将问题追溯到特定位置。
举个简单的例子,假设我们正在用一个方法将数字记录到日志中:
public void ExampleMethod(int number){
try{
int num = number
...open connection to file
...write number to file
}
catch(Exception ex){
.... deal with exception (ex.message,ex.stacktrace etc...)
}
finally{
...close file connection
}
}
有什么方法可以查看调用的方法(在本例中为 ExampleMethod
)以及传递的可能导致方法调用崩溃的特定编号?我相信您或许可以将此记录在 catch block 中,但我主要对捕获导致系统抛出异常的方法调用和参数感兴趣。
有什么想法吗?
最佳答案
我建议将参数值填充到异常的 Data
字典中,例如
public void ExampleMethod(int number) {
try {
int num = number
...open connection to file
...write number to file
}
catch(Exception ex) {
ex.Data["number"] = number;
//.... deal with exception (ex.message,ex.stacktrace etc...)
}
finally {
//...close file connection
}
此方法的另一个优点是您可以将参数填充到 catch
block 中,然后重新抛出异常并将其记录到其他地方而不会丢失堆栈跟踪,例如
catch(Exception ex) {
ex.Data["number"] = number;
throw;
}
关于c# - .NET 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109624/