Ruby之旅(16) 異常處理 rescue與ensure

來源:互聯網
上載者:User
begin #開始
 
 raise.. #拋出異常
 
rescue [ExceptionType = StandardException] #捕獲指定類型的異常 預設值是StandardException
 $! #表示異常資訊
 $@ #表示異常出現的代碼位置
else #其餘異常
 ..
ensure #不管有沒有異常,進入該代碼塊
 
end #結束

這是異常處理結構,可以結合$!錯誤原因,和$@錯誤位置做一個錯誤捕獲並提示的小程式了,比如

begin
    puts 
    puts "file: #{name = ARGV.shift}"
    file = open(name)
    i = 0
    file.read.each_line{|line| puts "#{i+=1}.#{line}" }
    puts
rescue
    puts "error:#{$!} at:#{$@}"
ensure
    file.close
end

上面的小程式讀入一個指定的檔案並加入行號進行輸出,當產生錯誤時會輸出錯誤資訊以及提示,你可以故意輸入一個不存在的檔案名稱。

其實begin相當於c#的try
rescue相當於c#的catch
ensure相當於c#的finaly
raise相當於c#的throw

異常類的結構

 

異常類
  • Object
    • Exception

      • (Interrupt) (ruby 1.7 特性 version 1.6以前的位置)
      • NoMemoryError
      • ScriptError
        • LoadError
        • (NameError) (ruby 1.7 特性 version 1.6以前的位置)
        • NotImplementedError
        • SyntaxError
      • SignalException
        • Interrupt (ruby 1.7 特性)
      • StandardError
        • ArgumentError
        • IndexError
          • KeyError (ruby 1.9 特性)
        • IOError
          • EOFError
        • LocalJumpError
        • NameError (ruby 1.7 特性)
          • NoMethodError (ruby 1.7 特性)
        • RangeError
          • FloatDomainError
        • RegexpError
        • RuntimeError
        • SecurityError
        • SystemCallError
          • Errno::EXXX
        • SystemStackError
        • ThreadError
        • TypeError
        • ZeroDivisionError
      • SystemExit
      • fatal

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.