首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby 中的错误处理

2012-08-31 
ruby 中的异常处理http://www.cnblogs.com/watir/archive/2009/03/28/1423951.html?????begin?#开始??rais

ruby 中的异常处理

http://www.cnblogs.com/watir/archive/2009/03/28/1423951.html

?

?

?

?

?begin?#开始
?
?raise..?#抛出异常
?
rescue?[ExceptionType?=?StandardException]?#捕获指定类型的异常?缺省值是StandardException
?$!?#表示异常信息
?$@?#表示异常出现的代码位置
else?#其余异常
?..
ensure?#不管有没有异常,进入该代码块
?
end?#结束

可以结合$!错误原因,和$@错误位置做一个错误捕获并提示的小程序,比如:

?

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

?

上面的小程序读入一个指定的文件并加入行号进行输出,当产生错误时会输出错误信息以及提示,可以故意输入一个不存在的文件名。 其实 begin相当于java 的try rescue相当于java的catch ensure相当于java 的 finaly raise相当于java 的 throw 异常类的结构为: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

热点排行