我有一个新应用程序,其中包含大量try-catch
块。我对是否可以编写将SaveExceptionInDatabase
方法附加到我在应用程序中使用的每个catch
块中的代码感兴趣。
try
{
//some actions
}
catch(exception e)
{
SaveExceptionInDatabase(e,DateTime.now(),CurrentUser);
ShowFriendlyNotification();
}
我认为轻松地从应用程序中删除错误会有所帮助,因为我多次注意到抛出异常后,第二次尝试执行相同的操作成功完成了。
编辑:
我正在使用带有Caliburn.Micro的WPF
答案 0 :(得分:1)
您可以使用类似的内容:
private void HandleDbException(Action action)
{
try
{
action();
}
catch (Exception e)
{
SaveExceptionInDatabase(e, DateTime.now(), CurrentUser);
ShowFriendlyNotification();
}
}
然后
HandleDbException(() =>
{
//some actions1
});
HandleDbException(() =>
{
//some actions2
});
...
它不会将模式应用于代码中的每个try / catch块,但至少避免了重复catch块。
答案 1 :(得分:1)
您可以使用PostSharp并处理异常。以下是一些相关文章,介绍了如何实现。这种方法看起来真的很酷,因为您可以将属性添加到类中并处理异常。
[DatabaseExceptionWrapper]
http://www.postsharp.net/blog/post/Day-1-e28093-OnExceptionAspect http://www.postsharp.net/blog/post/Improve-Exception-Handling-and-Caching-using-PostSharp