【发布时间】:2016-02-14 22:40:04
【问题描述】:
我的应用程序方法周围有一个全局 try/catch 来记录未处理的异常并显示错误消息。对于日志记录,我使用 NLog。如果我处理异常并手动记录它,我会在异常数据对象中设置一个键“记录”,以防止第二个日志来自全局 try/catch。
public partial class App : Application
{
public static void Main(string[] args)
{
try
{
// Application stuff
SomeMethod();
}
catch (Exception ex)
{
if (ex.Data['logged'] == false)
{
logger.Error(ex, "A unhandled exception occured.")
ex.Data['logged'] = true;
}
// Show error dialog
}
}
public static void SomeMethod()
{
try
{
// Method stuff
}
catch (Exception ex)
{
logger.Error(ex, "A handled exception occured.")
ex.Data['logged'] = true;
throw;
}
}
}
我想简化流程,这样我就不必手动调用ex.Data['logged'] = true;。有没有办法在使用 NLog 记录时自动修改异常的数据属性?我尝试使用 MethodCall-Target 但我无法访问异常引用。异常只能作为字符串传递。
【问题讨论】: