Как обработать исключение в генераторе функции filter?
У next есть второй параметр - значение по умолчанию, которое вернётся при невозможности получить значение из итератора/генератора. Можно указать в нём None и проверять, что вернулось не None.
А чем не устроило:
text_lower = text.lower() # зачем сто раз преобразовывать?
for x in list_words:
    if x.lower() in text:
        finder = x
else:  # else относится к for, а не к if
    finder = None