Как следует обрабатывать исключения, возникающие ниже уровня контроллера в веб-приложении Spring MVC? - PullRequest
1 голос
/ 25 сентября 2010

Допустим, у вас есть веб-приложение Spring с такой структурой:

com/
    myapp/
          controller/
          model/
          service/

Как вы должны обрабатывать исключения, возникающие ниже уровня контроллера?

Должны ли высделать методы в слоях Model и Service выбросить свои исключения до уровня Controller?

Что делать с ними, когда они достигают Контроллера?

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

Ответы [ 2 ]

3 голосов
/ 25 сентября 2010

Это очень сильно зависит от конкретного случая:

  • вы можете показать сообщение об исключении (переведенное с помощью некоторого механизма преобразования исключений в удобочитаемое представление) вместе с сообщением проверки - дляпример «Отправка электронной почты не удалась, повторите попытку позже»

  • Если исключение не может быть восстановлено, вы можете перенаправить на страницу, которая покажет понятное человеку объяснение

  • вы можете перенаправить на общую страницу 500 с надписью «К сожалению, что-то пошло не так»

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

1 голос
/ 25 сентября 2010

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

С учетом сказанного ни одно исключение не должно выходить за пределы уровня контроллера. Должно быть достаточно связи между уровнями обслуживания и контроллера, чтобы контроллер мог сообщить пользователю, что происходит в дружественных и простых для понимания терминах. Общение с пользователями является обязанностью контроллера.

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