Вы должны задокументировать каждое исключение, которое может быть вызвано вашим кодом, включая исключения в любых методах, которые вы можете вызвать.
Если список становится немного большим, вы можете создать свой собственный тип исключения. Поймайте все те, с которыми вы можете столкнуться в своем методе, оберните их в свое исключение и выбросьте его.
Еще одно место, где вы можете захотеть сделать это таким образом, - это если ваш метод находится в вашем API. Так же, как фасад упрощает несколько интерфейсов в один интерфейс, ваш API должен упростить несколько исключений в одно исключение. Упрощает использование вашего кода для звонящих.
Чтобы ответить на некоторые из опасений Эндрю (из комментариев), есть три типа исключений: те, о которых вы не знаете, те, о которых вы знаете и с которыми ничего не можете сделать, и те, о которых вы знаете и с которыми можете что-то сделать.
Те, о которых вы не знаете, хотите отпустить. Это принцип быстрого сбоя - лучше ваше приложение выйдет из строя, чем войдет в состояние, когда вы можете в конечном итоге испортить свои данные. Сбой расскажет вам о том, что произошло и почему, что может помочь вывести это исключение из списка «тех, о которых вы не знаете».
Те, о которых вы знаете и с которыми ничего не можете поделать, - это исключения, такие как OutOfMemoryExceptions. В крайних случаях вы можете захотеть обрабатывать подобные исключения, но если у вас нет каких-то довольно выдающихся требований, вы относитесь к ним как к первой категории - отпустите. Вы должны задокументировать эти исключения? Вы бы выглядели довольно глупо, документируя OOM для каждого отдельного метода, который обновляет объект.
Те, о которых вы знаете и можете что-то сделать, вы должны документировать и упаковывать.
Вы можете найти еще несколько рекомендаций по обработке исключений здесь.