Из того, что вы говорите, оба варианта 1 и 2 приводят к одному и тому же результату - возвращается ноль собак. Я бы сказал, что в этом случае лучше использовать запасной вариант, потому что он чище. Откат будет определен как часть команды, и как таковой будет согласован для всех применений этой команды. Это не будет правдой, если вы обработаете это как исключение. В этом случае вам нужно помнить о том, чтобы реализовать обработку исключений во всех местах, где выполняется вызов ... и таким же образом - и легко ошибиться, забыв об обработке некоторого места.
Обязательно ли иметь запасной вариант? Это не обязательно. Если не указано иное, возникает исключение. В вашем случае у вас есть запасная стратегия - она очень проста. На самом деле он описан в Hystrix Wiki как Silent Fail, и вы можете прочитать больше об этом на https://github.com/Netflix/Hystrix/wiki/How-To-Use#Common -Patterns-FailSilent
Стоит задуматься о том, какие операции требуют отступления или, скорее, каким должен быть запасной вариант. Стоит предоставить запасной вариант для операции чтения. Для операции записи это может быть не очень хорошей идеей, как описано здесь: https://github.com/Netflix/Hystrix/wiki/How-To-Use#Fallback.
Определение стратегии отката является частью шаблона. Представьте себе проект с несколькими разработчиками, в котором используется Hystrix. Будет приятно узнать, где именно 1016 *, чтобы увидеть запасную стратегию. Это огромное преимущество.
Следует иметь в виду, что исключения являются более дорогостоящими для обработки, поэтому их использование в качестве альтернативной стратегии - пустая трата ресурсов. Это не будет проблемой в небольшом проекте с небольшим количеством запросов, но может вызвать проблемы в системе, которая обрабатывает много таких вызовов.