Ruby異常處理結(jié)構(gòu)特點(diǎn)介紹
Ruby語言雖然是一款比較簡單應(yīng)用的語言,但是在實(shí)際編寫中同樣還會出現(xiàn)各種各樣的錯誤警告等。這就用到了異常處理。下面我們就來看看Ruby異常處理結(jié)構(gòu)。#t#
Ruby異常處理結(jié)構(gòu)代碼示例:
- begin #開始
- raise.. #拋出異常
- rescue [ExceptionType =
StandardException]
#捕獲指定類型的異常 缺省值是StandardException - $! #表示異常信息
- $@ #表示異常出現(xiàn)的代碼位置
- else #其余異常
- ..
- ensure #不管有沒有異常,進(jìn)入該代碼塊
- end #結(jié)束
可以結(jié)合$!錯誤原因,和$@錯誤位置做一個錯誤捕獲并提示的小程序,比如:
- begin
- puts
- puts "file: #{name = ARGV.shift}"
- file = open(name)
- i = 0
- file.read.each_line
{|line| puts "#{i+=1}.#{line}" }- rescue
- puts "error:#{$!} at:#{$@}"
- ensure
- file.close
- end
上面的小程序讀入一個指定的文件并加入行號進(jìn)行輸出,當(dāng)產(chǎn)生錯誤時會輸出錯誤信息以及提示,可以故意輸入一個不存在的文件名。 其實(shí) begin相當(dāng)于c#的try, rescue相當(dāng)于c#的catch, ensure相當(dāng)于c#的 finaly, raise相當(dāng)于c#的 throw 。
Ruby異常處理結(jié)構(gòu)為:
Object
Exception
(Interrupt) (ruby 1.7 特性 version 1.6以前的位置)
NoMemoryError
scrīptError
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
以上就是對Ruby異常處理結(jié)構(gòu)的詳細(xì)解讀。