Михаил Братеньков, 1-й вариант лучше (закрываю глаза на два return подряд), т.к. отсутствие файла и необходимость создать дефолтный – штатная ситуация в логике приложения.
Михаил Братеньков, в примере не вполне понятно: {error: file not found} это выброс ошибки или уже её обработка?
Оба варианта плохие тем, что скрывают причину облома внутри и надеются на пользователя этой функции, который по возвращённому пустому значению поймёт, что что-то пошло не так.