例外を補足する
独自のカスタム例外を書く前に、まずは例外処理の基本をしっかり確認しましょう。
この演習では、2つの引数、リスト x とインデックス ind を受け取り、そのインデックスの要素を反転(逆数に)する関数 invert_at_index(x, ind) が与えられています。たとえば、invert_at_index([5,6,7], 0) は 1/5、つまり 0.2 を返します。
あなたの目標は、発生したエラーの種類に応じてカスタム例外を発生させられるよう、エラー処理を実装することです。
この演習はコースの一部です
Pythonによるオブジェクト指向プログラミング入門
演習の手順
関数内で try - except - except パターン(except ブロックは2つ)を使って、次の2つの例外を捕捉して処理してください。
- まずはそのままコードを
try実行し、1/x[ind]を返します。 ZeroDivisionErrorが発生したら、"Cannot divide by zero!"と表示します。IndexErrorが発生したら、"Index out of range!"と表示します。
正しくできていれば、エラーなくコードが実行され、コンソールの出力は次のようになります。
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Modify the function to catch exceptions
def invert_at_index(x, ind):
____:
return 1/x[ind]
_____:
print("____")
____:
print("____")
a_list = [5,6,0,7]
# Works okay
print(invert_at_index(a_list, 1))
# Potential ZeroDivisionError
print(invert_at_index(a_list, 2))
# Potential IndexError
print(invert_at_index(a_list, 5))