Python 例外の捕捉

PythonBeginner

はじめに

囁きの森の神秘的な深淵の中で、月光の夜の銀色のマントの下で、初心者の魔法使いたちの間では、魔法の森の魂の指導者が現れたという噂がありました。このとらえどころのないガイドは、コードの構造そのものを制御できる蛇のような言語である Python の知識を持っていると言われていました。指導者を見つけることは、エラーの予測不可能な魔法を処理して魔法そのものをクラッシュさせることなく、コードを魅力的にするための例外をキャッチする古代の技術を学ぶことです。

ある夜、あなたは自分が古代のオークの前に立っていることに気づきます。その葉は幽かな輝きを放っています。ここ、森の真ん中で、あなたは指導者の秘密を学ぶことになります。あなたの目標は、Python で例外をキャッチする神秘的な技術を習得し、予期せぬことが起こっても呪文が途切れないようにすることです。

潜在的な呪いを特定する

このステップでは、Python の呪文(コード)で呪い(エラー)が発生する可能性のある場所を特定する方法を学びます。まず、時々うまくいかない単純な呪文を作成してみましょう。ポーションを小さなバイアルに分けるスクリプトを作成しますが、賢い魔法使いなら誰でも知っているように、ゼロで割ることは決してしてはいけません。

~/project内のpotion_dividing.pyという名前のファイルを開き、次のコードを追加します。

def divide_potions(total_potions, vial_count):
    return total_potions / vial_count

## 10 本のポーションを 2 つのバイアルに分ける試み
print(divide_potions(10, 2))

ターミナルで次のコマンドを使用してコードを実行します。

python ~/project/potion_dividing.py

次の出力が表示されるはずです。

5.0

これはポーションの分割が成功したことを示しています。

次に、potion_dividing.pyスクリプトを変更して、危険な呪文のケースを含めます。

print(divide_potions(10, 0))  ## この呪文は危険で対処する必要があります!

次の出力が表示されるはずです。

Traceback (most recent call last):
  File "/home/labex/project/potion_dividing.py", line 6, in <module>
    print(divide_potions(10, 0))
  File "/home/labex/project/potion_dividing.py", line 2, in divide_potions
    return total_potions / vial_count
ZeroDivisionError: division by zero

改良されたスクリプトを実行すると、キャッチする必要のある呪いの例外が表示されます。この実験では、このようなケースを上手に処理する方法を学びます。

守護の呪文を編み出す

ゼロで割るという呪いを経験したので、tryexcept 句を使って守護の呪文を編み出しましょう。potion_dividing.py スクリプトを更新して、そのような悲惨な結果からの保護策を追加します。

def divide_potions(total_potions, vial_count):
    try:
        return total_potions / vial_count
    except ZeroDivisionError:
        return "ソーサラーは決してゼロで割りません!"

## ポーションを安全に分割する試み
print(divide_potions(10, 2))
print(divide_potions(10, 0))  ## これはもはや呪いを引き起こすはずがありません

ターミナルで次のコマンドを使って、改良されたスクリプトを再度実行します。

python ~/project/potion_dividing.py

コードが適切に例外を処理し、エラーの代わりに警告メッセージが表示されるはずです。

5.0
ソーサラーは決してゼロで割りません!

まとめ

この実験では、魔法の森の設定の中で Python の例外の影のある世界を探索しました。潜在的なエラーを特定する方法と、予期せぬ災害からコードを守るための守護の呪文(try/except ブロック)をどのように唱えるかを検討しました。呪文の流れを乱すことなく、コードを保護します。

私たちの旅の終わりまでに、ゼロ除算エラーに遭遇するだけでなく、その混乱を回避する技術を身につけました。これにより、私たちのコードはより堅牢になり、混乱の力による中断の影響を受けにくくなりました。

コーディングの冒険を続ける際には、魔法の森の魂の指導者の言葉を忘れないでください。「賢い魔法使いは常に予期しないことを予想し、守護の条項で呪文を守ります。」