0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python自分用メモ】例外処理まとめ

Posted at

はじめに

Pythonの例外処理について本で読んだ内容をまとめました。

try文のいろいろな書き方

try節の中で例外が発生した場合、try節から抜けてexcept節に移る。
発生した例外に一致するexcept節の文を実行後にtry文の外側に移る。

try文(一つの例外処理)
try:
    (例外が発生する可能性のある処理)
except 対象の例外:
    (指定した例外が発生した場合に実行する処理)

try文ではexcept節に複数の例外を指定可能。

try文(複数の例外を処理1)
try:
    (例外が発生する可能性のある処理)
except 対象の例外A:
    (例外Aが発生した場合に実行する処理)
except 対象の例外B:
    (例外Bが発生した場合に実行する処理)
try文(複数の例外を処理2)
try:
    (例外が発生する可能性のある処理)
except (例外1, 例外2, ...):
    (対象の例外のいずれかが発生した場合に実行する処理)

except節に例外を指定しない場合、全ての例外がそのexcept節で処理される。

try文(全ての例外を処理)
try:
    (例外が発生する可能性のある処理)
except:
    (例外が発生した場合に実行する処理)

Except節は例外で指定した例外を処理するだけでなく、指定した例外を基底クラスとする例外も処理する。

例えば、Exceptionという例外クラスはほぼ全ての例外の基底クラスのため、
except節でExceptionを指定することで、その節でほぼ全ての例外を処理することができる。

try文(Exceptionを処理)
try:
    (例外が発生する可能性のある処理)
except Exception:
    (Exceptionが発生した場合に実行する処理)

例外発生時は例外クラスのオブジェクトが生成されており、except節でこのオブジェクトを受け取ることが可能。

try文(except節で例外オブジェクトを取得)
try:
    (例外が発生する可能性のある処理)
except 例外 as 変数:
    (指定した例外が発生した場合に実行する処理)
    (指定した変数に例外オブジェクトが代入されている)

except節の中にpass文を書くと、例外が発生したときに何も行わない。
⇨例外の隠蔽になるので注意が必要

try文(例外の隠蔽)
try:
    (例外が発生する可能性のある処理)
except 例外:
    pass

finally節に書いた処理は、例外が発生してもしなくても実行される。

try文(finally節の使用)
try:
    (例外が発生する可能性のある処理)
except 例外:
   (指定した例外が発生した場合に実行する処理)
finally:
    (例外が発生してもしなくても実行する処理) 

else節に書いた処理は、例外が発生しなかった場合に実行される。

try文(else節の使用)
try:
    (例外が発生する可能性のある処理)
except 例外:
    (指定した例外が発生した場合に実行する処理)
else:
    (例外が発生しなかった場合に実行する処理)
finally:
    (例外が発生してもしなくても実行する処理) 

raise文

raise文を使用すると、例外を発生させることができる。

raise文
raise 例外

except節の中でraise文を使用すると次のことができる。

  • 例外を他のexcept節に再送出する
  • 処理中の例外を原因として他の例外を発生させる

つまりexcept節でraise文を使用することで、あるexcept節内で例外の処理を完結させず、他のexcept節に残りの処理を委ねることができる。

try文(except節内で処理中の例外を再送出)
try:
    (例外が発生する可能性のある処理)
except 例外:
   raise
except:
   (再送出された例外の処理)
try文(except節内で例外Aを原因とする例外Bの発生)
try:
    (例外が発生する可能性のある処理)
except 例外A:
   raise 例外B from 例外A
except 例外B:
   (例外Aのexcept節で発生した例外Bの処理)

参考書籍

『Python[完全]入門』 松浦健一郎 司ゆき 著 (2021年3月29日発行)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?