Rubyのrescueは子メソッド内のエラーも拾ってくれる

Ruby on Rails

Ruby(Rails)の例外処理としてrescueがあります

よくあるのはこんな感じのです

def index
  1/0
rescue
  p "例外だよ〜"
end

【実行結果】

> “例外だよ〜"

まー、これはわかりますよね

ところで、以下のようにindex内で呼び出すメソッド内でエラーが発生した場合はどうなるのでしょうか?

def index
  hoge
rescue
  p "例外だよ〜"
end
 
def hoge
  1/0
end

【実行結果】

> “例外だよ〜"

結果から言うと、この場合でもちゃんとhogeメソッド内のエラーを拾って処理してくれます

では、この場合は?

def index
  hoge
rescue
  p "例外だよ〜"
end
 
def hoge
  1/0
rescue
  p "hogeの例外だよ〜"
end

【実行結果】

> “hogeの例外だよ〜"

hogeメソッド内のrescueで拾われるので、indexメソッド内のrescueには入りません

エンジニアの年収を上げる方法

フリーランスエンジニアで年収を大幅アップしませんか?
実際に僕は会社員からフリーランスエンジニアになって年収が87万円アップしました

今なら相談(ヒアリング)するだけで3,000円分のamazonギフト券がもらえます!
初めての案件契約で最大10万円分の準備金がもらえます
非公開の高単価案件(100万円超え)が多数あります

詳しくはこちら