8-3-2 例外を意図的に発生させてみよう

例外を発生させるプログラムを記述し保存する

以下のようにプログラムを記述し、ファイル名をfail_and_raise1.rbで保存します。

fail 'original error'

例外を発生させるプログラムを実行する

コマンドライン上で保存したプログラムを指定して実行します。実行結果にRuntimeErrorが表示されます。

$ ruby fail_and_raise1.rb
fail_and_raise1.rb:1:in `<main>': original error (RuntimeError)

例外クラスを指定して例外を発生させるプログラムを記述し保存する

以下のようにプログラムを記述し、ファイル名をfail_and_raise2.rbで保存します。

fail StandardError, 'original error'

例外クラスを指定して例外を発生させるプログラムを実行する

コマンドライン上で保存したプログラムを指定して実行します。実行結果にStandardErrorが表示されます。

$ ruby fail_and_raise2.rb
fail_and_raise2.rb:1:in `<main>': original error (StandardError)

rescue句で例外を発生させるプログラムを記述し保存する

以下のようにプログラムを記述し、ファイル名をfail_and_raise3.rbで保存します。

begin
  a
rescue => e
  p e.message
  raise
end

rescue句で例外を発生させるプログラムを実行する

コマンドライン上で保存したプログラムを指定して実行します。実行結果に"undefined local variable or method `a' for main:Object"が表示された後、NameErrorエラーが表示されます。

$ ruby fail_and_raise3.rb
"undefined local variable or method `a' for main:Object"
fail_and_raise3.rb:2:in `<main>': undefined local variable or method `a' for main:Object (NameError)