Я думаю, что важным фактором является то, кто ваши клиенты обслуживания.
Если ваш сервисный уровень представляет собой просто архитектурную границу между слоями в вашем собственном проекте, и сервисный клиент находится в пределах одной и той же области доверия, тогда можно расслабить вещи и позволить непроверенным исключениям выходить на уровень контроллера или сервисный клиент.
Тем не менее, для общедоступного кода; сервис, который потребляется третьей стороной или клиентом, я думаю, что лучше обернуть любые неконтролируемые исключения в сервис-ориентированное исключение, в первую очередь из соображений безопасности, во-вторых, для слабой связи и чистой абстракции.
Исключение уровня данных никогда не должно делать это напрямую конечному пользователю веб-приложения . Он потенциально содержит внутреннюю информацию о вашей схеме, ваших запросах, информации о номере строки, именах переменных или функций и т. Д. Исключения для конечных пользователей можно обезопасить в безопасных условиях.
Внешний клиент службы не имеет отношения к деталям вашей реализации и в любом случае не может обрабатывать непроверенные исключения, так как они являются ошибками или проблемами окружающей среды. В защищенных приложениях ошибки базы данных просто недостаточно безопасны для распространения, OracleException - ORA-01234 - ...
это может быть третья вставленная таблица. Клиенту должно быть разрешено иметь дело с любыми проверенными / ожидаемыми исключениями, которые он может обработать, и рассматривать все остальное как сообщение о потенциальной ошибке. Ваш сервисный контракт должен быть атомарной, последовательной, транзакционной абстракцией. Если он ничего не может сделать с исключением, то единственное, что остается сделать - это сообщить об ошибке, У вас уже есть возможность записать исключение, так зачем обременять вашего конечного пользователя деталями? Ваше приложение может отслеживаться, поэтому вы уже знаете о непроверенных исключениях, прежде чем пользователи сообщат о них.
Никогда нельзя употреблять исключения, и я не фанат проверенных исключений, но я предпочитаю иметь план, соответствующий характеру всего продукта.