例外処理には、tryブロック、exceptブロック、finallyブロック、およびelseブロックの4つの基本構文があります。以下にそれぞれの構文について説明し、サンプルコードを示します。
1. try-except文
tryブロック内で例外が発生した場合に、対応するexceptブロックが実行されます。
try:
# 例外が発生する可能性のあるコード
except エラーの種類:
# エラーの種類に対する例外処理
#サンプルコード
try:
num1 = 10
num2 = 0
result = num1 / num2 # 0で割り算をしようとする
except ZeroDivisionError:
print("0で割り算はできません") # ZeroDivisionErrorの場合の例外処理
2. try-except-finally文
finallyブロックは、tryブロック内で例外が発生しても、発生しなくても、必ず実行されます。
try:
# 例外が発生する可能性のあるコード
except エラーの種類:
# エラーの種類に対する例外処理
finally:
# 必ず実行される処理
#サンプルコード
try:
num1 = 10
num2 = 0
result = num1 / num2 # 0で割り算をしようとする
except ZeroDivisionError:
print("0で割り算はできません") # ZeroDivisionErrorの場合の例外処理
finally:
print("処理が完了しました") # 必ず実行される処理
try-except-else文
elseブロックは、tryブロック内で例外が発生しなかった場合に実行されます。
try:
# 例外が発生する可能性のあるコード
except エラーの種類:
# エラーの種類に対する例外処理
else:
# 例外が発生しなかった場合の処理
#サンプルコード
try:
num1 = 10
num2 = 5
result = num1 / num2 # 正常に割り算をする
except ZeroDivisionError:
print("0で割り算はできません") # ZeroDivisionErrorの場合の例外処理
else:
print("結果:", result) # 例外が発生しなかった場合の処理
3つの基本構文を組み合わせ
try-except文、try-except-finally文、try-except-else文の3つの基本構文を組み合わせることで、複雑な例外処理を行うことができます。以下に、それらの構文を組み合わせた例を示します。
try:
# 例外が発生する可能性のあるコード
except エラーの種類1:
# エラーの種類1に対する例外処理
except エラーの種類2:
# エラーの種類2に対する例外処理
except: # エラーの種類を指定しない場合の例外処理
# その他のエラーに対する例外処理
else:
# 例外が発生しなかった場合の処理
finally:
# 必ず実行される処理
try:
num1 = 10
num2 = 0
result = num1 / num2 # 0で割り算をしようとする
except ZeroDivisionError:
print("0で割り算はできません") # ZeroDivisionErrorの場合の例外処理
except TypeError:
print("数値以外のデータ型が使用されました") # TypeErrorの場合の例外処理
except Exception as e:
print("エラーが発生しました:", e) # その他のエラーに対する例外処理
else:
print("結果:", result) # 例外が発生しなかった場合の処理
finally:
print("処理が完了しました") # 必ず実行される処理