Pzz>Тем не менее, это не повод отдавать все ошибки наверх. Там с ними нифига не разберутся, а просто красиво распечатают стек и отправят это еще выше наверх, человеческому пользователю, чтобы он разбирался.
Правильно. Ошибки нужно обрабатывать там, где их МОЖНО обработать. Обработать — это не "залогировать и кинуть дальше", а сделать некое осмысленное действие. Скажем, если это ошибка типа "объект не был создан", но ошибку можно исправить путем создания дефолтного объекта, — на самом нижнем уровне где это можно сделать, там и обработать.
Но если "обработка ошибок" заключается в показе диалога юзеру, то и исключение должно пролетать до того места, где этот диалог можно показать. Ловить его 10 раз по дороге и перезапускать с потерей оригинального контекста — жжуть и happy debugging.