На мой взгляд, все зависит от типа исключения и от того, какую обработку вы хотите использовать с ним.
Некоторые ошибки должны быть представлены пользователю, конечно. Если ваше приложение в значительной степени зависит от соединения с базой данных, а ваш сервер баз данных недоступен, вам нужно «всплыть» (не уверен, что это правильный термин?) Ваше событие вплоть до графического интерфейса и сообщить пользователю, что произошла ошибка .
Но если ваше приложение может обработать другие ошибки, вам просто нужно «всплыть» событие до уровня, где вы можете его обработать.
Как уже говорилось, существует множество библиотек, которые могут помочь вам легко обрабатывать и регистрировать ошибки, и выбор такой библиотеки полностью зависит от вашего проекта и того, что соответствует вашим потребностям.