Как мы пишем оператор "кроме", который ничего не ловит? - PullRequest
3 голосов
/ 25 октября 2019

Я хочу try -блок таким образом, чтобы любое исключение, возникающее внутри try -блока, оставалось необработанным. Это сделано для того, чтобы я мог написать блок try для подготовки к будущему. Когда-нибудь я напишу какую-то значимую обработку ошибок. Однако у меня пока нет реальных except заявлений. Работает следующий вид, но безобразно

_ = type("", (Exception,), dict())

try:
    lizard = [1, 2, 3]
    y = z + w
    print(lizard[983])
except _:
    print("I hope this string never prints")

Ответы [ 2 ]

5 голосов
/ 25 октября 2019

Пропустить предложение except в целом. Оператору try требуется как минимум одно предложение except или a finally, которое выполняется независимо от того, перехватите ли вы исключение.

try:
    lizard = [1, 2, 3]
    y = z + w
    print(lizard[983])
finally:
    pass

Предложение finallyфактически не выполняет какой-либо код и никак не влияет на поток управления вашего кода;он просто вводит запрет на операцию, прежде чем покинуть оператор try, будь то успешное завершение кода или создание необработанного исключения.

Как только вы начнете добавлять предложения except, вы можете удалить либо finally или оставьте его на месте.

(Удаленный ответ перехватывает и немедленно вызывает любое исключение, что тоже хорошо IMO:

try:
    ...
except Exception:
    raise

)

0 голосов
/ 25 октября 2019
try:
   # do something
except:
   pass   # this will make nothing

ключевое слово pass используется для этой цели. когда ты хочешь ничего не делать, просто напиши какой-нибудь код и зайди позже и подумай о том, что ты действительно хочешь там делать (или, по крайней мере, так я его использую)

...