ruby錯誤處理和異常

來源:互聯網
上載者:User

標籤:

一、常見異常
異常名 常見原因 怎樣拋出
RuntimeError raise拋出的預設異常 raise
NoMethodError 對象找不到對應的方法 a=Oject.new
a.jackmethod
NameError 解譯器碰到一個不能解析為變數或方法名的標識符 a=jack
IOError 讀關閉的流,寫唯讀流,或類似的操作 STDIN.puts("不能寫入")
Errno::error 與檔案IO相關的一類錯誤 File.open(-10)
TypeError 方法接受到它不能處理的參數 a=3+"abc"
ArgumentError 傳遞參數的數目出錯 def o(x) end  o(1,2,3)
 二、捕獲異常用rescue捕獲異常#用rescue捕獲異常begin result=20/0puts resultrescue ZeroDivisionErrorputs "Zero Error"rescueputs "Unknow error"end輸出:Zero Error 三、raise拋出異常def divide(x)raise ArgumentError if x==0end begindivide(0)rescue ArgumentErrorputs "ArgumentError"end輸出:ArgumentError 四、異常儲存到變數def divide(x)raise ArgumentError if x==0end begindivide(0)rescue =>eputs e.to_send輸出:ArgumentError  五、建立異常類class ThrowExceptionL<Exceptionputs "Error L"end beginraise ThrowExceptionL,"got error"rescue ThrowExceptionL=>eputs "Error #{e}"end 輸出:Error LError got error 

Ruby異常處理結構程式碼範例:

  1. begin #開始  
  2. raise.. #拋出異常  
  3. rescue [ExceptionType = 
    StandardException] 
    #捕獲指定類型的異常 預設值是StandardException  
  4. $! #表示異常資訊  
  5. [email protected] #表示異常出現的代碼位置  
  6. else #其餘異常  
  7. ..  
  8. ensure #不管有沒有異常,進入該代碼塊  
  9. end #結束 

可以結合$!錯誤原因,和[email protected]錯誤位置做一個錯誤捕獲並提示的小程式,比如:


  1. begin  
  2. puts   
  3. puts "file: #{name = ARGV.shift}"  
  4. file = open(name)  
  5. i = 0 
  6. file.read.each_line
    {|line| puts "#{i+=1}.#{line}" }  
  7. rescue  
  8. puts "error:#{$!} at:#{[email protected]}"  
  9. ensure  
  10. file.close  
  11. end  

ruby錯誤處理和異常

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.