Ruby 异常处理 rescue与ensure

上一篇 / 下一篇  2008-12-31 23:13:51 / 个人分类: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}" }
    puts
rescue
    puts 
"error:#{$!} at:#{$@}"
ensure
    file.close
end

------------------------------------
上面的小程序读入一个指定的文件并加入行号进行输出,当产生错误时会输出错误信息以及提示,可以故意输入一个不存在的文件名。

其实begin相当于c#的try
rescue相当于c#的catch
ensure相当于c#的finaly
raise相当于c#的throw

异常类的结构为:

TAG: Ruby

 

评分:0

我来说两句

Open Toolbar