Kolega błędnie wpisany ten kod (uproszczony), i zastanawiałem się, dlaczego jego wyjątek nie zaplątuje:Wyjaśnienie "lub" w składni wyjątku, dlaczego jest poprawna składnia i jak działa?
>>> try:
... raise ValueError
... except IndexError or ValueError:
... print 'Caught!'
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError
Teraz wiem, że poprawna składnia złapać oba typy wyjątku powinny być except (IndexError, ValueError):
, ale dlaczego powyższa ważna składnia? A jak to działa?
Na przykład powyższy kod spowoduje wyświetlenie ValueError
i nie zostanie przyłapany. Ale weź ten kod:
>>> try:
... raise IndexError
... except IndexError or ValueError:
... print 'Caught!'
...
Caught!
Zostanie złapany IndexError
. W jaki sposób oceniany jest model or
?
Dzięki za każde światło, które można przelać!
Duh !!! Wiedziałem, że ... Po prostu nie zastosowałem tego tutaj. Wiedziałem również, że słowo kluczowe "except" przyjmuje oświadczenia ... więc naprawdę powinienem był to rozgryźć. Dziękuję bardzo! – Ben
@Ben. Nie ma za co :) –