Если я правильно читаю вопрос, я бы сказал, что реализация try / catch, которая перехватывает исключения (вы не упоминаете - перехватывает все исключения или только конкретное?) И выдает другое исключение, как правило, плохая вещь.
Недостатки:
По крайней мере вы потеряете информацию трассировки стека - вы увидите, что стек будет распространяться только на метод, в котором выдается новое исключение - вы потенциально потеряете здесь некоторую хорошую отладочную информацию.
Если вы перехватываете Exception, вы рискуете замаскировать критические исключения, такие как OutOfMemory или StackOverflow, с менее критическим исключением и, таким образом, оставить процесс запущенным там, где, возможно, он должен был быть снесен.
Возможные преимущества:
В некоторых очень специфических случаях вы можете взять исключение, которое не имеет большого значения отладки (например, некоторые исключения, возвращаемые из базы данных), и заключить в исключение, которое добавляет больше контекста, например, id объекта, с которым вы имели дело .
Однако почти во всех случаях это неприятный запах, и его следует использовать с осторожностью.
Как правило, вы должны поймать исключение, только когда есть что-то реалистичное, что вы можете сделать в этом месте - то есть восстановление, откат, переход к плану B и т. Д. Если вы ничего не можете с этим поделать, просто дайте ему пройти вверх по цепочке. Вы должны ловить и выдавать новое исключение только в том случае, если в этом месте имеются конкретные и полезные данные, которые могут увеличить исходное исключение и, следовательно, помочь в отладке.