На разных логических уровнях можно (и нужно) делать re-throw более общих типов исключений (с ссылкой на оригинал внутри), если нет возможности их обработать на месте. Например, TooLongNameException
и NegativePriceException
где-то выше станут ModelValidationException
, т.е. там вам достаточно знать, что модель кривая, вне зависимости от того, по какой причине это произошло.
Может быть пример не самый удачный, ибо здесь наследование бы подошло. А вообще, большой список исключений - это косвенный признак того, что метод слишком много делает (S - SOLID).