【戻る】 【進む】   目次        45. 例外

例外

  • 例外はエラー処理に関するプログラマの負担を軽くする
  • 例外はエラー発生場所で投げられる
  • 例外は捕捉することができる
  • 捕捉されなかった例外はプログラムを終了させる
  • 捕捉はrescue節を持つbeginendでなされる
  • 例外の発生の有無によらずrescue節は実行される
  • raise関数でユーザーが例外を発生させることができる

  • 次のスクリプトは source というファイルが存在しないとき open 関数は例外を発生し直ちに終了する。
    # USAGE:./copy.rb source target
    source, target = ARGV
    f = open(source, "rb")
    data = f.read
    f.close
    g = open(target, "wb")
    g.print data
    g.close
    
    copy0.rb

    ブロック付きopen関数は、ほぼ右下のようなコードと同値
    open("some.txt") {|f|
      f.read
    }
    
    open0.rb
    begin
      f = open("some.txt")
      f.read
    ensure
      f.close
    end
    
    open1.rb

    ユーザーが例外を発生させることもできる
    def foo
      raise "Wooo!"
    end
    
    def bar; foo; end
    
    begin
      bar
    rescue
      puts $!
    end
    
    userraise0.rb
     


    【戻る】 【進む】   目次        45. 例外