Menu
Coddy logo textTech

例外とは?

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 43/56。

実行時に、ゼロによる除算、"abc" を整数として解析すること、nil に対してメソッドを呼び出すことなど、何かがうまくいかなくなったとき、Rubyは例外を発生させます。プログラムは停止し、Rubyは何がどこで起こったかを出力します。

10 / 0
# ZeroDivisionError: divided by 0

失敗の各種類は、それぞれ独自のクラスになっています。一般的なものをいくつか挙げます:

  • ZeroDivisionError:整数をゼロで除算した場合
  • ArgumentError:メソッドに誤った引数が渡された場合(Integer("abc")
  • NoMethodError: レシーバが持っていないメソッドの呼び出し (nil.upcase)
  • TypeError: 誤った種類のオブジェクトに対する操作 ("a" + 1)

すべての例外クラスには .message があります。これは、例外が処理されないときに Ruby が出力する、人間が読める形式の説明です。次のレッスンでは、プログラムの実行を継続できるように、これらの例外をキャッチする方法を説明します。

challenge icon

チャレンジ

初心者

1行の入力を読み込みます。これはRubyの式名です。それに対してRubyが発生させるであろう例外クラスの名前を出力してください。case文を使用してください(実際に例外を発生させる必要はありません):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • その他 → Unknown

入力がnil-methodの場合、出力はNoMethodErrorとなります。

自分で試してみよう

kind = gets.chomp

# TODO: case kind ... 一致する例外クラス名を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン