私の同僚は、この (簡略化された) コードを誤って入力し、なぜ彼の例外がキャッチされないのか疑問に思っていました:
>>> try:
... raise ValueError
... except IndexError or ValueError:
... print 'Caught!'
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError
これで、両方のタイプの例外をキャッチする正しい構文は であることがわかりましたexcept (IndexError, ValueError):
が、上記の構文が有効であると見なされるのはなぜですか? そして、それはどのように機能しますか?
たとえば、上記のコードは a をスローし、ValueError
キャッチされません。ただし、次のコードを使用してください。
>>> try:
... raise IndexError
... except IndexError or ValueError:
... print 'Caught!'
...
Caught!
IndexError
が捕まる。はどうor
評価され、何に評価されるのか!?
あなたが流すことができる光をありがとう!