Прикрепить конкретное действие к определенной части кода - PullRequest
0 голосов
/ 27 августа 2018

У меня есть новое приложение, которое содержит большое количество try-catch блоков. Меня интересует, можно ли написать код, который каким-либо образом прикрепляет метод SaveExceptionInDatabase к каждому catch -блоку, который я использовал в своем приложении.

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

Я думаю, что будет полезно легко удалить ошибки из моего приложения, потому что я несколько раз замечал, что после создания исключения попытка выполнить ту же операцию во второй раз заканчивается успешно.

EDIT:

Я использую WPF с Caliburn.Micro

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы можете использовать 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

0 голосов
/ 27 августа 2018

Вы можете использовать что-то вроде:

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.

...