Обязательно ли использовать try/else?
Ваши варианты не ошибочны, но есть несколько моментов для осмысления.
Судя по наличию return, у Вас функция возвращает текст. Какое поведение Вы предусмотрели
в случае неудачного завершения операции requests.get? И на каком уровне Вы намерены
обрабатывать ошибки. Никто не может сказать Вам, как правильно, пока не узнает контекст
Вашей задачи. Может Вы выберите стратегию: "падать как можно раньше" и вызвав панику
завершите приложение, запишите в лог и перейдете к следующему url или что то еще.
Предложу Вам третьи вариант:try:
    html = requests.get(url, headers=self.headers)
except Exception as e:
    print('Root page parse is failed', e)
    # Ваши инструкции для ошибочной ситуации
return html.text
Первый вариант плох тем, что блоке для отлова стоит return, который не может
вызвать в данном случае исключение. Второй тем, что используете else
без необходимости. Явное лучше неявного. Использование Else как многие
эксперты замечают в целом вредная практика. И в добавок, если функция
возвращает значение, то прописывайте return в основном теле, а не в
ветвлении. В будущем откроете для себя аннотирование типов, и начнете
использовать статические анализаторы.
P.S. Если будет время, то виды исключении лучше обрабатывать явно, а не
ловить их все в один блок. Так можно прописать несколько стратегии для
разных случаев сбоя.
Первый вариант конечно. Второй не будет работать даже.