Catching Throwable сам по себе является уже плохой практикой (и отмечается как таковой многими инструментами проверки качества кода). Обернуть его в RuntimeException и снова выбросить? Ужасно! Весь смысл наличия иерархии исключений подрывается этим.
«Тренд» от проверенных исключений на самом деле немного более тонкий. Между архитектурными уровнями (или, например, на границе API-интерфейса платформы) обычной практикой является определение одного или нескольких значимых типов исключений и включение в них любых ошибок, связанных с реализацией (например, взгляните на Spring или Hibernate).
Создание проверенных исключений или нет - это вопрос стиля. Если существует высокая вероятность того, что вызывающая сторона будет готова и способна обработать состояние ошибки, тогда я проверяю его (например, обнаружено параллельное обновление), в противном случае не проверяю (например, ошибка подключения к базе данных). Непроверенные исключения должны «пузыриться» в коде вашего приложения (т. Е. Не быть перехваченными) и обрабатываться на высоком уровне, отображая какую-то страницу / экран ошибок.