はじめに
魔法のコーディングの名門校、「不思議なコーディングアカデミー」へようこそ。ここには、最も能力の高いコーディング奇才たちが集まり、技術を磨いています。あなたは最近このアカデミーに入った若き奇才で、魔法的なアルゴリズムや複雑な呪文の、常に挑戦的な世界に入り込んだばかりです。
あなたの旅は、魔法の世界中で知られる卓越した問題解決能力と膨大な Python 魔法の知識で有名な、著名なコンピティティブ・スペルキャスティングコーチであるマスター・ピソの指導の下で始まります。アカデミーでは、すべての奇才が呪文を唱える技術を学ばなければなりませんが、本当に強力な奇才になるためには、予期せぬことを予測し管理する能力が必要です。
今日、マスター・ピソはあなたに例外を発生させるという古代の技術を教えます。これは、有望な奇才にとって基本的な技術であり、魔法(コード)の流れを制御し、呪文を唱える際(プログラミング中)に起こり得る予期せぬエラーに対するセーフガードを作成することができます。
この実験の目的は、適切に例外を処理して発生させることができる堅牢な Python コードを書く力をあなたに与えることで、あなたの呪文(プログラム)が強力であるだけでなく、強靭で安全であることを保証することです。用意してください。なぜなら、あなたは Python 例外処理の不思議な世界を通る魔法の旅に出発するからです!
例外の基本を理解する
このステップでは、Python における例外の基本について学びます。Python における例外は、呪文の唱え方の流れを乱す予期せぬイベントのようなものです。Python がエラーに遭遇すると、現在の処理を停止し、コールスタックに沿ってそれを渡していき、処理されるまで続けます。処理されなければ、呪文(プログラム)はクラッシュし、Python はエラーメッセージを表示します。
例外が発生するシナリオをシミュレートするために、うまくいかない呪文を唱えようとする(除算を実行する)簡単な Python スクリプトを作成します。
~/project ディレクトリに、以下の内容で spellcasting.py という名前のファイルを開きます。
## spellcasting.py
def divide_potions(potions, wizards):
return potions / wizards
## ゼロ人の奇才にポーションを分配しようとすると、例外が発生します。
divide_potions(10, 0)
以下のコマンドを使用して、呪文の唱え方のスクリプトを実行します。
python3 ~/project/spellcasting.py
Python が ZeroDivisionError を発生させることに気付きます。次のステップでは、この例外を適切に処理する方法を学びます。
Traceback (most recent call last):
File "/home/labex/project/spellcasting.py", line 7, in <module>
divide_potions(10, 0)
File "/home/labex/project/spellcasting.py", line 4, in divide_potions
return potions / wizards
ZeroDivisionError: division by zero
独自の例外を発生させる
もう少し高度な呪文の唱え方の技術に移りましょう。それは、独自の例外を発生させることです。これにより、独自のエラーメッセージを作成して使用できるようになり、呪文をより柔軟で制御可能にすることができます。
このステップでは、divide_potions 関数に不正な数の奇才が渡された場合に、独自の Exception を発生させるように spellcasting.py スクリプトを修正します。
まず、spellcasting.py の divid_potions 関数を次のように修正します。
## spellcasting.py
def divide_potions(potions, wizards):
if wizards == 0:
raise Exception("Cannot divide potions among zero wizards!")
return potions / wizards
## 意図的なエラーでポーションを再分割しようとします。
divide_potions(20, 0)
変更を保存した後、修正したスクリプトを再度実行します。
python3 ~/project/spellcasting.py
今回は、Python がカスタムの Exception メッセージを発生させます。
Traceback (most recent call last):
File "/home/labex/project/spellcasting.py", line 7, in <module>
divide_potions(20, 0)
File "/home/labex/project/spellcasting.py", line 3, in divide_potions
raise Exception("Cannot divide potions among zero wizards!")
Exception: Cannot divide potions among zero wizards!
try-except を使った例外処理
このステップでは、try-except ブロックを使って例外を上手に処理する方法を学びます。呪文(プログラム)がエラーから回復できるようにすることは、奇才にとって重要なスキルです。
spellcasting.py スクリプトの divide_potions 関数呼び出しの周りに try-except ブロックを追加します。
## spellcasting.py
def divide_potions(potions, wizards):
if wizards == 0:
raise Exception("Cannot divide potions among zero wizards!")
return potions / wizards
try:
## ポーションを分割して、潜在的なエラーを処理します。
result = divide_potions(30, 0)
print(f"Each wizard receives {result} potions.")
except Exception as e:
print(f"Spell failed: {e}")
シェルでこれを実行します。
python3 ~/project/spellcasting.py
今、スクリプトを実行すると、クラッシュする代わりに、次の出力が表示されます。
Spell failed: Cannot divide potions among zero wizards!
まとめ
この実験では、Python 例外処理の魅力的な世界を探索しました。まず、例外の紹介として自然に発生させることから始め、次に独自の例外とメッセージを作成する方法を学び、最後に呪文(プログラム)を破ることなくこれらの例外を処理する技術で締めくくりました。
あなたは今、Python における例外の発生と処理の基本をマスターしました。この技術は、コーディング奇才としてのあなたの旅において、確かに役立つでしょう。これは、プログラムの堅牢性とユーザーフレンドリネスに貢献するだけでなく、予期せぬ動作を予測し対策することを教えてくれます。呪文を完全なものに保ち、奇才としてのあなたの実力を強力なものに維持します。
若き魔法使いよ、コードがあなたと共にありますように。



