1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python によるオブジェクト指向プログラミング

Connected

演習

例外を捕捉する

独自のカスタム例外を書く前に、まずは例外処理の基本をしっかり確認しましょう。

この演習では、2つの引数(リスト x とインデックス ind)を取り、そのインデックス位置の要素を反転(逆数に)する関数 invert_at_index(x, ind) が与えられています。たとえば、invert_at_index([5,6,7], 1) は 1/6、つまり 0.166666 を返します。

まずはコードをそのまま実行して、コンソールの出力を確認してください。この関数には2つの安全でない操作があります。1つ目は、反転しようとしている要素の値が 0 の場合、ZeroDivisionError 例外が発生することです。2つ目は、関数に渡したインデックスがリストの範囲外の場合、IndexError が発生することです。どちらの場合もスクリプトは中断されてしまい、望ましくないことがあります。

指示

100 XP

関数内で try - except - except パターン(except ブロックを2つ)を使って、次の2つの例外を捕捉・処理してください。

  • コードをそのまま try で実行する、
  • ZeroDivisionError が発生したら、"Cannot divide by zero!" と出力する、
  • IndexError が発生したら、"Index out of range!" と出力する

正しく実装できていれば、エラーなく実行でき、コンソールの出力は次のようになります。

0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None