1. ホーム
  2. python

[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)

2022-03-18 08:04:11

質問

できることは知っています。

try:
    # do something that may fail
except:
    # do this if ANYTHING goes wrong

こんなこともできるんです。

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreTooShortException:
    # stand on a ladder

しかし、2つの異なる例外の内部で同じことをしたい場合、今考えられる最善の方法は、こうすることです。

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreBeingMeanException:
    # say please

このような方法はないでしょうか(どちらの例外でも取るべき動作は say please ):

try:
    # do something that may fail
except IDontLikeYouException, YouAreBeingMeanException:
    # say please

の構文と一致するので、これは本当にうまくいきません。

try:
    # do something that may fail
except Exception, e:
    # say please

つまり、2つの異なる例外をキャッチしようとする私の努力は、正確には伝わっていないのです。

何かいい方法はないでしょうか?

どのように解決するのですか?

から Python ドキュメント :

except 節は、複数の例外を括弧付きのタプルとして指定することができます。

except (IDontLikeYouException, YouAreBeingMeanException) as e:
    pass

または、Python2のみの場合。

except (IDontLikeYouException, YouAreBeingMeanException), e:
    pass

例外と変数をカンマで区切ることは、Python 2.6 と 2.7 ではまだ機能しますが、現在は非推奨で Python 3 では機能しません。 as .