Python:1つは複数の例外を試す


195

Pythonでは、except1つのtryステートメントに複数のステートメントを含めることはできますか?といった :

try:
 #something1
 #something2
except ExceptionType1:
 #return xyz
except ExceptionType2:
 #return abc

7
@ Eva611:謝罪しないでください。(1)試してみてください。(2)質問に対する回答を投稿します。
S.Lott

6
それは機能します。Pythonインタープリターで試してみました...
Eva611

38
@ Eva611質問は大丈夫だったと思います。これは、Pythonインタープリターでサンプルを設定するよりも、Googleの方がはるかに高速でした。DrTysaと他の人たちは、あなたを叱るのではなく、すぐに「はい」と答えるべきでした。
ギャランティ2013

5
ほとんどの場合、最初の推測が間違っているか、微妙なニュアンスを見逃しているため、(他の15,000など)最初にGoogleを試しました!
クリス・

9
私はグーグルを試して、この質問を見つけました。したがって、SOのように公開されているフォーラムで他の誰かが質問してくれてうれしいです。また、Googleのアルゴリズムが私の最初の結果としてポップアップしてくれたので、他の人がリンクしてくれてうれしいです。
kingledion 2016

回答:


328

はい、可能です。

try:
   ...
except FirstException:
   handle_first_one()

except SecondException:
   handle_second_one()

except (ThirdException, FourthException, FifthException) as e:
   handle_either_of_3rd_4th_or_5th()

except Exception:
   handle_all_other_exceptions()

参照:http : //docs.python.org/tutorial/errors.html

"as"キーワードは、エラーを変数に割り当てるために使用されます。これにより、エラーは後でコードでより徹底的に調査できます。また、Python 3ではトリプル例外の場合の括弧が必要であることにも注意してください。このページには詳細があります:複数の例外を1行でキャッチ(ブロックを除く)


76
両方のケースで同じことをしたい場合は、except (SomeError, OtherError):です。OPの質問には答えませんが、Google経由でここにアクセスする一部の人を助けるかもしれません。
マーク・

たとえば、データ構造の複数のバージョンを新しい構造に変換する必要がある場合、たとえば、コードのバージョンを更新するときに、try..exceptsをネストできます。
Rolf of Saxony、

5
すべての例外を処理する場合はexcept Exception:、plainの代わりに使用する必要がありますexcept:。(平易な例外を除いて均等にキャッチしSystemExitKeyboardInterrupt通常はあなたが望むものではありません)
polvoazul

e名前を付けるので、何かをしたいと思うかもしれません:)
HelloGoodbye
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.