tanakahdaのプログラマ手帳

プログラミングとかソフトウェア開発とかの備忘録

例外処理の基礎

 
#
# 例外が予期される部分をbegin ... end でくくる。
# 例外が発生した場合は、対応するrescue節にジャンプする。
#

begin

# Argumenterrorまたはその子孫クラスの例外を処理
# error変数に代入し制御をrescue節に移す
rescue ArgumentError => error then
  puts error.message
rescue TypeError # 例外捕捉変数は省略可能

# クラス指定を省略するとStandardErrorを指定したことになる
rescue => anather_error

# 例外が発生しなかった場合はelse内を処理
else
  puts "例外なし"
# ensureは例外発生有無に関わらずからなず実行される
ensure
  puts "ensure節"
end


# raise
# 明示的に例外を発生させるには組み込み関数raiseを用いる
begin
  raise ArgumentError, 'エラーメッセージ'
rescue ArgumentError => error then
  puts error.message 
end  

結果:
 例外なし
 ensure節
 エラーメッセージ