Один из лучших вариантов пробрасывания ислкючения — создать свой специализированный. Например, UserNotFoundException, который унаследован от RuntimeException. Плюс обрабатывать исключение должен тот класс, который знает, что с ним нужно делать. Иначе прокидывать дальше.
Исключения нужно использовать только для сигнализации исключительных ситуаций и не использовать для корректного исполнения. Они намного дороже с точки зрения ресурсов, чем обычный возврат значения или управления.
Post #376
5.27K