Bonkura - Kenny

SIerで働く文系SEの記録

【たのしいRuby_10】エラー処理と例外

たのしいRubyの第10章を学んだ。

たのしいRuby 第4版

たのしいRuby 第4版

例外

エラー処理をサポートする為の仕組み

begin
 例外を発生させる可能性のある処理
rescue => 例外オブジェクトが代入される変数
 例外が起こった場合の処理
end
#例外が発生したメソッド中にrescue節がない場合は、呼び出し元に遡って探す。」

例外オブジェクトのメソッド

  • class:例外の種類
  • message:例外のメッセージ
  • backtrace:例外の発生した位置情報

ensure(後処理)

例外が起こっても怒らなくても常に実行したい処理

begin
 例外を発生させる可能性のある処理
rescue => 例外オブジェクトが代入される変数
 例外が起こった場合の処理
ensure
 例外の有無に関わらず実行する処理
end

やり直し

resucue節でretryを用いると、begin以下の処理を繰り返す。

begin
 例外を発生させる可能性のある処理
rescue => 例外オブジェクトが代入される変数
 例外が起こった場合の処理
 sleep 10
 retry
end

※beginとendは省略可能!!

rescue修飾子

式1 rescue 式2

n = Integer(val) rescue 0
#valにStringが入ってたら例外が発生し0が代入される。

例外を発生させる

raiseメソッド