【Python入門】例外(Exception)を理解しよう!ハンズオン解説4.3

当サイトではアフィリエイト広告を利用しています。

リファレンス

Pythonを使っていて、思わぬエラーでプログラムが止まってしまったことはありませんか?
そんなときに役立つのが 「例外処理(Exception Handling)」 です!

今回は、初心者向けに Pythonの例外の仕組みをハンズオン形式で解説 します✨
実際にコードを書きながら、一緒に学んでいきましょう!💡


🎯 学べること

✅ Pythonの 例外とは何か を理解する
例外の発生方法対処方法 を学ぶ
tryexcept を使ってエラーを処理できるようになる


1️⃣ そもそも「例外」って何?

Pythonのプログラムが実行中にエラーが発生すると、例外(Exception) が発生します。
例えば、ゼロで割り算をすると ZeroDivisionError という例外が出ます。

📌 実験:エラーを発生させてみよう

まずは、エラーが発生するコードを書いてみましょう👇

print("計算を開始します")
result = 10 / 0  # 0で割るエラー(ZeroDivisionError)
print(f"計算結果: {result}")

📝 実行結果

計算を開始します
Traceback (most recent call last):
  File "main.py", line 2, in <module>
    result = 10 / 0
ZeroDivisionError: division by zero

💥 エラーが発生すると、プログラムが途中で止まってしまいます!
これを防ぐために、「例外処理」を行う必要があります! 🚀


2️⃣ try ~ except でエラーを処理する

エラーが発生しそうな処理を try ブロックに書き、
エラーが起きたら except で対処する方法を学びましょう!

📌 ハンズオン:エラーをキャッチして処理する

次のコードを実行してみてください👇

try:
    print("計算を開始します")
    result = 10 / 0  # 例外が発生
    print(f"計算結果: {result}")
except ZeroDivisionError:
    print("エラー: 0で割ることはできません")

📝 実行結果

計算を開始します
エラー: 0で割ることはできません

🎉 except のおかげで、プログラムが止まらずに処理を続けられました!


3️⃣ いろいろなエラーに対応しよう

Pythonには ZeroDivisionError 以外にも、
ValueErrorIndexError などのエラーがあります。

📌 ハンズオン:複数のエラーを処理

次のコードを試してみましょう👇

try:
    num = int(input("数字を入力してください: "))  # 文字を入力するとエラー
    result = 10 / num  # 0を入力するとエラー
    print(f"計算結果: {result}")
except ZeroDivisionError:
    print("エラー: 0で割ることはできません")
except ValueError:
    print("エラー: 数字を入力してください")

📝 入力例と結果

入力 2 の場合:

数字を入力してください: 2
計算結果: 5.0

入力 0 の場合:

数字を入力してください: 0
エラー: 0で割ることはできません

入力 abc の場合:

数字を入力してください: abc
エラー: 数字を入力してください

🎯 異なる種類のエラーに対応できるようになりました! 🚀


4️⃣ except でエラーの詳細を取得する

エラーの詳細を知りたいときは、except Exception as e を使います。

📌 ハンズオン:エラー内容を表示

try:
    num = int(input("数字を入力してください: "))
    result = 10 / num
    print(f"計算結果: {result}")
except Exception as e:  # すべてのエラーをキャッチ
    print(f"エラーが発生しました: {e}")

📝 実行例

数字を入力してください: 0
エラーが発生しました: division by zero
数字を入力してください: abc
エラーが発生しました: invalid literal for int() with base 10: 'abc'

💡 エラーの詳細を表示すれば、デバッグがしやすくなります!


5️⃣ finally で必ず実行する処理

finally を使うと、例外が発生しても 最後に必ず実行される処理 を書けます。

📌 ハンズオン:finally を使う

try:
    num = int(input("数字を入力してください: "))
    result = 10 / num
    print(f"計算結果: {result}")
except ZeroDivisionError:
    print("エラー: 0で割ることはできません")
except ValueError:
    print("エラー: 数字を入力してください")
finally:
    print("プログラム終了")  # 例外が発生しても必ず実行

📝 実行結果

数字を入力してください: 0
エラー: 0で割ることはできません
プログラム終了
数字を入力してください: 5
計算結果: 2.0
プログラム終了

💡 ファイルのクローズ処理やログ出力などに使えます!


6️⃣ raise を使ってエラーを発生させる

raise を使うと、自分でエラーを発生させられます。

📌 ハンズオン:自作の例外を発生

def check_number(num):
    if num < 0:
        raise ValueError("負の数は許可されていません")
    return num

try:
    n = int(input("正の数を入力してください: "))
    check_number(n)
    print("正しい入力です!")
except ValueError as e:
    print(f"エラー: {e}")

📝 実行例

正の数を入力してください: -5
エラー: 負の数は許可されていません
正の数を入力してください: 3
正しい入力です!

🚀 エラーチェックをカスタマイズできます!


🎉 まとめ

例外(Exception) は、プログラム実行中のエラーを処理する仕組み
tryexcept を使うと、エラーが発生してもプログラムを止めずに処理できる
finally を使うと、エラーが発生しても必ず実行される処理を追加できる
raise を使えば、自分でエラーを発生させられる

💡 Pythonの例外処理をマスターして、エラーに強いコードを書きましょう! 🚀