例外処理とは?
⇨エラーになった時にどういう処理をするのか事前に決めておくこと.
そうすることでエラーが起きた後、エラーが起きた箇所以降の処理も実行できるようになる.
例外処理なし.
⇨エラーが起きたらプログラムが止まる.
例外処理あり.
⇨エラーが起きても継続的にプログラムは動作する.
例外処理の書き方
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メソッドなし = 自分の想定外のエラーが出た時に例外処理を行う