Использование множественного оператора кроме возвращает ошибку за пределами блока try / кроме - PullRequest
0 голосов
/ 30 января 2019

Я использую попытку кроме блока в красивом супе, чтобы получить изображение из поста.Попробуйте заблокировать блок, если у поста есть определенный класс, если нет, он переходит к исключением.Таким образом, я получаю эту ошибку в блоке try, что класс не существует.Это упрощенная версия кода.

a = "check"

try:
    print(b)
except Exception as e:
    print(c)
except Exception as e:
    print(e)
except Exception as e:
    print(a)

Насколько я понимаю, здесь не должно быть ошибок, и необходимо распечатать «чек».Но я получаю эту ошибку имя 'b' не определено

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Что @ Scotty1- говорит, кажется, ответ на ваш вопрос, однако это другой способ с менее вложенными исключениями try.Я собирался опубликовать это как комментарий, но он немного длинный, поэтому я помещаю его сюда и удаляю его, если он неправильный.

почему бы не сделать что-то подобное?

a = 'check'
varL = ['b', 'c', 'e', 'a']
for x in varL:
    if x in locals() or x in globals():
        exec('print({})'.format(x))

Обратите внимание, что exec обычно медленнее, чем выполнение обычного кода, поэтому, если вы сделаете это, убедитесь, что он не повторяется много раз.

0 голосов
/ 30 января 2019

Проблема, с которой вы сталкиваетесь:
В качестве исключений рассматривается только блок try! Если вы хотите отлавливать ошибки, возникающие в блоках except, их нужно сложить вtry сами блоки.

Краткий пример:

a = "check"

try:
    print(b)
except Exception as e:
    try:
        print(c)
    except Exception as e:
        try:
            print(e)
        except Exception as e:
            print(a)
...