Прежде всего, вы должны объявить в предложении throw исключение, которое вы выбросили, а не то, которое вы поймали, при условии, что вы выбросили проверенное исключение.
Во-вторых, вам не нужно этого делать,Это всего лишь один из трех вариантов.
Зачем вы это делаете?Обычно это делается между прикладными уровнями.Например, Hibernate отлавливает SQLExceptions и перебрасывает их как непроверенный HibernateException, так что код, который вызывает методы Hibernate, не должен быть загрязнен try / catches для SQLExceptions.Другой вариант - перевести низкоуровневое исключение в какое-то исключение бизнес-логики, которое может обрабатываться в стеке.Это позволяет лучше изолировать бизнес-логику от деталей реализации низкого уровня.