Наследование от Exception для предоставления вашего собственного класса Exception будет хорошо работать для исключений, которые вы генерируете в своем коде, и вы можете использовать внутренний конструктор исключений для переноса встроенных исключений в цепочку.
Если бы вы захотели попробовать это, вам нужно было бы заменить весь код обработки исключений и, возможно, добавить еще чанк. Я не думаю, что это было бы значительно лучше, чем подход Питера Макга, но он мог бы позволить вам использовать различные варианты при сохранении и проверке исходных исключений и повторном выбрасывании, например, ведение записи о том, было ли оно уже зарегистрировано ниже цепь.
Просто чтобы быть в явном виде, можно использовать:
catch (Exception e)
{
log(e);
throw;
}
, который отбросит исходное исключение.