ume

Ruby 例外処理

例外処理とは?

⇨エラーになった時にどういう処理をするのか事前に決めておくこと.
そうすることでエラーが起きた後、エラーが起きた箇所以降の処理も実行できるようになる.

例外処理なし.
⇨エラーが起きたらプログラムが止まる.

例外処理あり.
⇨エラーが起きても継続的にプログラムは動作する.

例外処理の書き方

begin 
実行するコード(このコードの中でエラーが出たらrescueのコードが実行される)
rescue
例外(エラー)が発生した時の処理
end 

例、例外処理の使用してみる

class Icoca


  def add(amount)
     puts 例外が発生します  if amount < 100
  end

end
icoca = Icoca.new
#今回はaddメソッド内でエラーが発生した場合に100円以上にしてと例外処理を出力してみる
begin
  Icoca.add(100) #実行するコード
rescue 
  puts "100円以上にして" #エラーが起きた時に実行される処理
#出力結果 100円以上にして
end

どこがエラーで例外処理がされたのか?
NG(文字列なのに""がないので)↓

puts 例外が発生します

このようにエラーが含まれていたらrescueの処理が実行されていることがわかりました.

今度はicocaにチャージする場合100円未満はエラーを出すようにしたいケースを考える

class Suica


  def add(amount)
    raise  if amount < 100
      @blance += amount
  end


end
suica = Suica.new
begin
  suica.add(1)
rescue 
  puts "100円以上にして"
end
出力結果 100円以上にして

解説.

    raise  if amount < 100

ここでamountが100未満だったら意図的に例外を発生させています.

意図的とは?
⇨僕自身があえて例外処理させたかったのでraiseメソッド(例外処理を発生させる)を使用し例外処理を行いました。このコードの場合amountが100未満だったらraise(例外処理)するという意味になります.
先ほどの具体例(puts 例外が発生します)との違いは私自身の意図しないエラーが発生した際に例外処理が実行されました。

つまり raiseメソッドあり=自分の意志で例外処理を起こせる.
raiseメソッドなし = 自分の想定外のエラーが出た時に例外処理を行う

参考情報

www.sejuku.net