try-except を使った引数渡しのテスト
このステップでは、関数に引数を渡す際に発生する可能性のあるエラーを処理するために、try-except
ブロックを使用する方法を学びます。これは、ユーザー入力や外部データを扱う場合に特に重要です。このようなデータの型や形式は、関数が期待するものと異なる可能性があります。
try-except
を使ったエラーハンドリングを含むように、my_function.py
スクリプトを変更しましょう。無効な引数で add_numbers
関数を呼び出し、結果として発生する TypeError
をキャッチします。
VS Code エディタを使って ~/project
ディレクトリの my_function.py
ファイルを開き、以下のように変更します。
## filename: ~/project/my_function.py
import inspect
def add_numbers(x: int, y: int = 10) -> int:
"""This function adds two numbers and returns the result."""
return x + y
try:
result = add_numbers("hello", 5)
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
try:
result = add_numbers(5, "world")
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
try:
result = add_numbers(5, 5)
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
この変更後のスクリプトでは、以下のことを行っています。
add_numbers
の呼び出しを try-except
ブロックで囲みます。
- 最初の引数に文字列を、2 番目の引数に整数を指定して
add_numbers
を呼び出そうとします。
- 最初の引数に整数を、2 番目の引数に文字列を指定して
add_numbers
を呼び出そうとします。
- 2 つの整数を引数として
add_numbers
を呼び出そうとします。
TypeError
が発生した場合(整数の代わりに文字列を渡したときに発生します)、例外をキャッチしてエラーメッセージを出力します。
TypeError
が発生しない場合、関数呼び出しの結果を出力します。
では、python
コマンドを使ってスクリプトを実行しましょう。
python ~/project/my_function.py
以下の出力が表示されるはずです。
Error: unsupported operand type(s) for +: 'str' and 'int'
Error: unsupported operand type(s) for +: 'int' and 'str'
Result: 10
この出力は、try-except
ブロックを使って、関数に無効な引数を渡したときに発生するエラーを適切に処理できることを示しています。最初の 2 回の add_numbers
呼び出しでは TypeError
例外が発生し、except
ブロックでキャッチされて処理されます。2 つの整数を引数とする 3 回目の add_numbers
呼び出しは正常に実行され、結果が出力されます。
try-except
ブロックを使用することは、堅牢で信頼性の高いコードを書くためのベストプラクティスです。これにより、潜在的なエラーを予測し、プログラムがクラッシュしないように処理することができます。