Где использовать обработку исключений - PullRequest
0 голосов
/ 09 января 2019

У меня есть контроллер MVC, который использует класс обслуживания платежей. Где я должен делать обработку исключений? Что такое лучшая практика?

Использую ли я блоки try / catch в контроллере и классе обслуживания? Это исключение только что снова выдано в классе обслуживания, чтобы оно могло быть обработано в контроллере? Или вся обработка исключений должна выполняться в контроллере? Я могу поймать определенные исключения Stripe, это должно быть сделано в классе обслуживания или контроллере? Confused ...

public async Task<IActionResult> DoSomething(MyViewModel model)
{    
    try
    {
        await _paymentService.UpdateSomethingAsync(id, token);
    }
    catch (Exception ex)
    {
        //handle
    }
    enter code here    
}

public class PaymentService : IPaymentService
{   
    public async Task UpdateSomethingAsync(string id, string token)
    {
        try
        {
            //update using Stripe...
        }
        catch (Exception ex)
        {
            //TODO: Implement error handling
            throw;
        }
    }
}

1 Ответ

0 голосов
/ 09 января 2019

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

Receiver (в данном случае контроллер) должен иметь собственный механизм обработки ошибок, так как это другой уровень приложения и может потребовать некоторых манипуляций над исключениями или его регистрации на уровне пользовательского интерфейса. Здесь обратите внимание, что если нет никаких манипуляций или регистрации исключений или требуется ошибка, вы можете напрямую показать исключение уровня обслуживания и удалить перехват с контроллера.

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...