Pythonにおける異なるタイプの例外のキャッチ
同じコード内で、さまざまなタイプの例外を キャッチする必要が生じることがあります。
例えば、ゼロ除算の例外をキャッチする必要があるとします。 この種のエラーが発生すると、次の例外が発生します:
ZeroDivisionError: division by zero
これをキャッチするには、例外名を
exceptブロックに記述します:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
また、次のようなリストがあるとします:
lst = [1, 2, 3]
tryブロックに、存在しない要素へのアクセスなど、
他の潜在的なエラーを含むコードを記述した場合、
exceptブロックでキャッチされなかった例外は
そのまま通過し、コンソールに出力されます。
その結果、コードの実行が停止してしまいます:
lst = [1, 2, 3]
try:
print(lst[4]) # IndexError: list index out of range を出力
except ZeroDivisionError:
print('error: do not divide by zero')
このような状況を解決するには、各ブロックで 対応する例外タイプの名前を指定する必要があります。 存在しない要素へのアクセスに対する例外を コードに追加してみましょう:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
次のコードが与えられています:
txt = '2'
res1 = txt + 3
res2 = txt1
変数res1とres2で発生する
例外をキャッチするコードを記述してください。