将特定操作附加到代码的特定部分

时间:2018-08-27 15:03:55

标签: c# try-catch

我有一个新应用程序,其中包含大量try-catch块。我对是否可以编写将SaveExceptionInDatabase方法附加到我在应用程序中使用的每个catch块中的代码感兴趣。

try
{
    //some actions
}
catch(exception e)
{
   SaveExceptionInDatabase(e,DateTime.now(),CurrentUser);
   ShowFriendlyNotification();
}

我认为轻松地从应用程序中删除错误会有所帮助,因为我多次注意到抛出异常后,第二次尝试执行相同的操作成功完成了。

编辑:

我正在使用带有Caliburn.Micro的WPF

2 个答案:

答案 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