ruby 例外処理について

2011/10/04

Rubyでは「begin」と「rescue」を使う。

基本的な書き方

「処理A」を実行したときに「処理が止まるようなエラー」や「例外の記述的なもの」があった場合「処理B」を実行。
※「処理が止まらないエラー」だと処理Bは実行されない。
  1. begin
  2.   処理A
  3. rescue
  4.   処理B
  5. end

エラーや例外を変数に代入

「エラー」や「例外」の「すべて」をオブジェクト「e」に代入する。
※下記の場合だと、「エラー」や「例外」の内容を出力(puts)。

  1. begin
  2.   処理A
  3. rescue => e
  4.   puts e.message
  5. end

例外を作成

「raise」を使う。

下記の場合だと、まず2行目で以降の処理が省かれる。(処理Bは実行されない)
8行目で「raise」の内容が「e」に入り、9行目で「raise」の内容の「reCatNap」が出力される。

  1. def recatnap
  2.   raise "reCatNap"
  3.   処理B
  4. end
  5.  
  6. begin
  7.   処理A
  8. rescue => e
  9.   puts e.message
  10. end
  11.  
  12. recatnap

任意のエラーの場合とその他で処理をわける。

任意のエラーに何があるかわからないからとりあえず「Timeout::Error」を使う。
※エラーの条件分岐みたいなもの。

  1. def recatnap
  2.   raise "reCatNap"
  3.   処理B
  4. end
  5.  
  6. begin
  7.   処理A
  8. rescue Timeout::Error => e
  9.   puts e.message
  10. rescue => e
  11.   puts e.message
  12. end
  13.  
  14. recatnap

ちなみにPHPはこっち→「php 例外処理について

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい