参照用メモ
基本
begin #通常処理 raise #例外送信 rescue IOError ex #例外発生時の処理1 puts "#{ex.class}: #{ex.message}" puts "#{ex.backtrace}" rescue TypeError, ArgumentError => ex2 #例外発生時の処理2 retry #コードブロックの再実行 rescue StandardError => ex3 #例外発生時の処理3 else #例外が発生しなかった場合の処理 ensure #例外の発生有無に関わらず実行される処理 end
ルール
- すべての例外はExceptionクラスを継承する。
- 標準例外はStandardErrorを継承する。
- else,ensureは省略可能
- Exceptionオブジェクト名は$! 取得可能。別名をつける事も可能
- Exceptionクラスはmessageとbacktraceメソッドを持つ
- 複数の例外キャッチも可能
- retryを使って同じ処理をもう一度トライすることも可能
- rescueで例外クラスを省略するとStandardErrorを処理する