Python の複数の例外
プログラミングでは、例外はプログラムの通常の流れを妨げる出来事です。Python では、エラーとして表されます。例外は、IndexError、KeyError などの原因に応じて、さまざまなタイプになる可能性があります。
try
および except
ブロックを使用して、例外を処理できます。try
ブロックには、例外を発生させる可能性のあるコードが含まれています。例外が発生した場合は、except
ブロックで代替コードを指定できます。
例えば、
try:
print(5 / 0)
except:
print(5 / 1)
出力:
5
5/0
は例外を発生させるため、except
ブロックのコードを実行します。
raise
キーワードを使用して手動で例外を発生させることも可能であることに注意してください。
Python では複数の例外を処理することもできます。Python にはさまざまな種類の例外があることがわかっているため、さまざまな例外に対して複数の except
ステートメントを含めることができます。
例えば、
try:
raise ValueError()
except ValueError:
print("Value Error")
except KeyError:
print("Key Error")
出力:
Value Error
1つの except
ステートメントで複数の例外をキャッチすることもできます。これらの方法については、以下で説明します。
複数の例外をキャッチするためのコンマと括弧の使用
これを実現する最初の方法は、例外をコンマで区切り、括弧で囲むことです。次のコードはその方法を示しています。
try:
raise ValueError()
except (ValueError, KeyError):
print("Error")
出力:
Error
括弧内の例外が発生した場合、このブロックのコードが実行されます。例外オブジェクト(エラーオブジェクトとも呼ばれます)に名前を付けることもできます。e
は、エラーオブジェクトに最も一般的に使用される名前です。例えば、
try:
raise ValueError()
except (ValueError, KeyError) as e:
print("Error")
出力:
Error
as
キーワードは、オブジェクトの名前のエイリアスを作成します。Python 2.5 より前では、以下に示すように、エラーオブジェクトの名前をコンマで区切るだけで、as
キーワードの使用を排除することができました。
try:
raise ValueError()
except (ValueError, KeyError), e:
print("Error")
出力:
Error
複数の例外をキャッチするには、suppress()
関数を使用する
contextlib
ライブラリは、suppress()
と呼ばれる非常に便利な関数を提供します。この関数は、複数の例外の処理にも使用できます。
この関数は、try
、except
、および pass
ステートメントを 1 行のコードに結合します。これは、例外処理でも使用される with
ステートメントとともに使用され、コードをよりクリーンで読みやすくします。
次のコードは、この関数の使用方法を示しています。
from contextlib import suppress
with suppress(FileNotFoundError):
os.remove("somefile.tmp")
上記のコードは、try
、except
、および pass
ステートメントを含む次のプログラムと同等です。
try:
os.remove("somefile.tmp")
except FileNotFoundError:
pass
pass
ステートメントは、何も実行したくないが空のコードのエラーを回避したい場合に使用されます。
以下に示すように、複数の例外に対して suppress
関数を使用できます。
from contextlib import suppress
with suppress(FileNotFoundError, KeyError):
os.remove("somefile.tmp")
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn