Ruby異常處理結構特點介紹
Ruby語言雖然是一款比較簡單應用的語言,但是在實際編寫中同樣還會出現各種各樣的錯誤警告等。這就用到了異常處理。下面我們就來看看Ruby異常處理結構。#t#
Ruby異常處理結構代碼示例:
- 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}" }- rescue
- puts "error:#{$!} at:#{$@}"
- ensure
- file.close
- end
上面的小程序讀入一個指定的文件并加入行號進行輸出,當產生錯誤時會輸出錯誤信息以及提示,可以故意輸入一個不存在的文件名。 其實 begin相當于c#的try, rescue相當于c#的catch, ensure相當于c#的 finaly, raise相當于c#的 throw 。
Ruby異常處理結構為:
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異常處理結構的詳細解讀。