ruby 例外処理について
2011/10/04
Rubyでは「begin」と「rescue」を使う。
基本的な書き方
「処理A」を実行したときに「処理が止まるようなエラー」や「例外の記述的なもの」があった場合「処理B」を実行。
※「処理が止まらないエラー」だと処理Bは実行されない。
※「処理が止まらないエラー」だと処理Bは実行されない。
- begin
- 処理A
- rescue
- 処理B
- end
エラーや例外を変数に代入
「エラー」や「例外」の「すべて」をオブジェクト「e」に代入する。
※下記の場合だと、「エラー」や「例外」の内容を出力(puts)。
- begin
- 処理A
- rescue => e
- puts e.message
- end
例外を作成
「raise」を使う。
下記の場合だと、まず2行目で以降の処理が省かれる。(処理Bは実行されない)
8行目で「raise」の内容が「e」に入り、9行目で「raise」の内容の「reCatNap」が出力される。
- def recatnap
- raise "reCatNap"
- 処理B
- end
- begin
- 処理A
- rescue => e
- puts e.message
- end
- recatnap
任意のエラーの場合とその他で処理をわける。
任意のエラーに何があるかわからないからとりあえず「Timeout::Error」を使う。
※エラーの条件分岐みたいなもの。
- def recatnap
- raise "reCatNap"
- 処理B
- end
- begin
- 処理A
- rescue Timeout::Error => e
- puts e.message
- rescue => e
- puts e.message
- end
- recatnap
ちなみにPHPはこっち→「php 例外処理について」