LoginSignup
0
0

More than 3 years have passed since last update.

[Rails]例外処理を書く方法とは?

Posted at

例外処理とは、、?

例外処理とは、エラーがでたときの処理を行うことです。
エラー原因の特定やシステム側で不具合を起こさないためにも例外処理を書けば便利です。

例外処理の書き方

begin,rescueの基本形

エラーの対象となりそうな箇所をbeginで囲い、エラーが発生した場合の処理をrescueの中に書く。


begin
  100 / 0
rescue
  p "0で割れません"
end

puts "おはようございます"

ワンライナーで書く

ワンライナーで書くことも可能です。


sample_1 = 10 / 0 rescue 0

sample_2 = 10 / nil rescue 0

puts sample_1 #=>0
puts sample_2 #=>0

エラー内容を取得する(e)

また、rescueの後に引数を指定してあげて、変数の中にエラー内容を格納できます。


begin
  10 / 0
rescue => e
  puts e #=> divided by 0
end

エラーごとに条件分岐する

他にも、rescueの後にエラーメッセージを指定することで、
どのエラーが出た時にどの処理をするか,というのを条件分岐ができます。


begin
  10 / 0
rescue NoMethodError
  puts "メソッドはありません"
rescue ZeroDivisionError
  puts "0で割れません"
end

raiseの使い方

パラメータが想定されたものではない時や、不正なアクセスがきたといった場合に、明示的にエラーを発生させ、処理を中断させたいときに使います。


begin
  raise NoMethodError # 発生させたい例外のクラス
rescue => e
  puts e
end

エラーメッセージを出力することも可能です。


begin
  raise RuntimeError, "実行時エラーです"
rescue => e
  puts e
end

retryの使い方

エラーが起きても、再度beginに戻って実行することができます。


num = 0
begin
  puts 10 / num
rescue ZeroDivisionError => e
  puts e
  num = 1
  retry #beginブロックを再度実行
end

puts "終了しました"

ensureの使い方

例外が発生してもしなくても実行される処理を書くことができる。


begin
  puts "例外なし"
rescue => e
  puts e
ensure
  puts "ここは絶対実行する!"
end
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0