はじめに
この実験では、Python で例外が発生したかどうかを確認する方法を学びます。この実験では、例外を理解し、try-except
ブロックを使用して例外をキャッチして処理することに焦点を当て、プログラムのクラッシュを防ぎます。
まず、ZeroDivisionError
例外を発生させる Python スクリプトを作成します。次に、try-except
ブロックを使用してこの例外をキャッチし、エラーを適切に処理し、プログラムを継続実行する方法を学びます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Python で例外が発生したかどうかを確認する方法を学びます。この実験では、例外を理解し、try-except
ブロックを使用して例外をキャッチして処理することに焦点を当て、プログラムのクラッシュを防ぎます。
まず、ZeroDivisionError
例外を発生させる Python スクリプトを作成します。次に、try-except
ブロックを使用してこの例外をキャッチし、エラーを適切に処理し、プログラムを継続実行する方法を学びます。
このステップでは、Python の例外について学びます。例外とは、プログラムの実行中に発生し、通常の命令の流れを中断するイベントです。例外を理解することは、堅牢で信頼性の高い Python コードを書くために重要です。
Python でエラーが発生すると、例外が発生します。例外が処理されない場合、プログラムは終了し、エラーメッセージが表示されます。ただし、try-except
ブロックを使用することで、例外をキャッチして処理し、プログラムのクラッシュを防ぐことができます。
例外を発生させる簡単な例から始めましょう。
LabEx 環境で VS Code エディタを開きます。
~/project
ディレクトリに division.py
という名前の新しいファイルを作成します。
~/project/division.py
division.py
ファイルに以下のコードを追加します。
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
このコードは 10 を 0 で割ろうとしますが、これは無効な操作であり、ZeroDivisionError
例外が発生します。
ターミナルで以下のコマンドを使用してスクリプトを実行します。
python division.py
次のような出力が表示されます。
Traceback (most recent call last):
File "/home/labex/project/division.py", line 3, in <module>
result = numerator / denominator
ZeroDivisionError: division by zero
トレースバックにより、division.py
ファイルの 3 行目で ZeroDivisionError
が発生したことがわかります。例外が処理されなかったため、プログラムは終了しました。
では、try-except
ブロックを使用してこの例外を処理する方法を見てみましょう。
このステップでは、Python で try-except
ブロックを使用して例外をキャッチし、処理する方法を学びます。これにより、エラーが発生してもプログラムを継続実行することができます。
try-except
ブロックの基本構造は次の通りです。
try:
## 例外を発生させる可能性のあるコード
except ExceptionType:
## 例外を処理するコード
try
ブロック内のコードが実行されます。ExceptionType
型の例外が発生した場合、except
ブロック内のコードが実行されます。例外が発生しない場合、except
ブロックはスキップされます。
前のステップの division.py
ファイルを変更して、ZeroDivisionError
例外を処理しましょう。
VS Code エディタで division.py
ファイルを開きます。
コードを変更して try-except
ブロックを追加します。
try:
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
このコードでは、try
ブロックに ZeroDivisionError
を発生させる可能性のある除算演算が含まれています。except
ブロックは ZeroDivisionError
をキャッチし、エラーメッセージを出力します。
ターミナルで以下のコマンドを使用してスクリプトを実行します。
python division.py
次の出力が表示されます。
Error: Cannot divide by zero.
プログラムはクラッシュする代わりに、ZeroDivisionError
を適切に処理し、有益なメッセージを出力します。
これは、try-except
ブロックを使用して例外によるプログラムのクラッシュを防ぐ方法を示しています。
このステップでは、except
ブロック内で例外の種類を調べ、例外メッセージにアクセスする方法を学びます。これにより、異なる種類の例外を異なる方法で処理し、より詳細なエラーメッセージを提供することができます。
例外がキャッチされたとき、except
節で as
キーワードを使用して例外を変数に割り当てることができます。
try:
## 例外を発生させる可能性のあるコード
except ExceptionType as e:
## 例外を処理するコード
## 'e' は例外オブジェクト
変数 e
には例外オブジェクトが格納され、これを使用して例外の種類やメッセージなどの情報にアクセスすることができます。
division.py
ファイルを変更して、例外の種類を調べ、例外メッセージを出力しましょう。
VS Code エディタで division.py
ファイルを開きます。
コードを変更して、例外の種類を調べ、メッセージを出力します。
try:
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
except ZeroDivisionError as e:
print(f"Error: {type(e).__name__} - {e}")
このコードでは、ZeroDivisionError
をキャッチして変数 e
に割り当てています。そして、type(e).__name__
を使用して例外の種類の名前を取得し、e
を使用して例外メッセージを取得します。これらを書式付き文字列で出力します。
ターミナルで以下のコマンドを使用してスクリプトを実行します。
python division.py
次の出力が表示されます。
Error: ZeroDivisionError - division by zero
出力には、例外の種類 (ZeroDivisionError
) と例外メッセージ (division by zero
) が含まれています。
これにより、発生したエラーに関するより詳細な情報を提供でき、コードのデバッグが容易になります。また、この情報を使用して、異なる種類の例外を異なる方法で処理し、それぞれのケースに対してより具体的なエラー処理を行うことができます。
この実験では、Python の例外について学びました。例外とは、プログラムの通常の流れを中断するイベントです。エラーが発生すると例外が発生し、処理されない場合、プログラムは終了します。
また、try-except
ブロックを使用して例外をキャッチし、処理する方法を学び、プログラムのクラッシュを防ぐことができました。この実験では ZeroDivisionError
を示し、try-except
を使用してこれを処理する方法を説明しました。