Думайте об исключении как о человеке, который выпрыгивает из горящего дома и зовет на помощь: вы не хотите, чтобы они напугали население, но вы хотите, чтобы они уведомляли правильных людей, чтобы они что-то сделали с огнем.Имея это в виду:
1) Если у вас что-то не так в DoSomething и вы знаете, как это исправить - вам не нужно исключение: просто исправьте это внутри DoSomething.
2) ЕслиУ DoSomething проблемы с обработкой проблемы (неправильный атрибут, недоступные ресурсы и т. Д.) - используйте исключение, чтобы ESCALATE проблему и обработайте ее на уровне, где такая обработка возможна.
3) Если DoSomething ввернутспособ, на который вы никак не можете повлиять (например, сбой файловой системы и исключения ввода-вывода везде) - просто перехватите исключение, зарегистрируйте его и корректно завершите работу - по крайней мере, такая ситуация не будет выглядеть как взрыв.