Python: пока не исключение - PullRequest
0 голосов
/ 29 декабря 2018

Итак, я знаю, что вы можете использовать блоки try/except для управления выводом ошибок, например:

try:
    print("ok")
    print(str.translate)
    print(str.foo)
except AttributeError:
    print("oops, found an error")

print("done")

..., что дает следующий вывод:

ok
<method 'translate' of 'str' objects>
oops, found an error
done

Теперь, есть ли способ сделать следующее с циклом while, например, while not AttributeError, например:

while not AttributeError:
    print("ok")
    print(str.translate)
    print(str.foo)
print("done")

, который будет выдавать тот же результат, что и выше, только без oops, found an error?Это уменьшит потребность в блоках типа except: pass, которые необходимы, но немного бессмысленны, если вам нечего делать в блоке except.

Я пробовал while not AttributeError и while not AttributeError(), которые обапросто пропустите что-нибудь в блоке while.Итак, есть ли способ сделать это в Python?

Редактировать: Это действительно не цикл как таковой, но блок while будет работать, ипродолжить, если обнаружится ошибка, и просто продолжить, если достигнет конца.

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Следующий код будет зацикливаться, пока не обнаружит ошибку.

while True:
  try:
    print("ok")
    print(str.translate)
    print(str.foo)
  except AttributeError:
    print("oops, found an error")
    break
  print("done")
0 голосов
/ 29 декабря 2018

Можете ли вы попробовать что-то вроде:

while True:
    try:
        print("ok")
        print(str.translate)
        print(str.foo)
    except:
        break
print('done')
...