Пока все ответы выглядят хорошо, но я бы добавил:
Чтобы скрыть детали реализации, которые могли бы быть раскрыты, потому что вам нужно обработать эти исключения.
например. Вы не хотите, чтобы ваш интерфейс перехватывал SQLException. Вы должны выбросить свои собственные исключения из своего кода доступа к данным и позволить своему пользовательскому интерфейсу справиться с ними. Если вы перешли на хранение данных, не относящееся к поставщику баз данных (например, XML, файловая система и т. Д.), Вам не нужно будет менять код пользовательского интерфейса.
Однако я сделал бы это, только если бы явно обрабатывал их в своем коде пользовательского интерфейса.