Ruby之旅(16) 异常处理 rescue与ensure

上一篇 / 下一篇  2010-08-11 14:31:40 / 个人分类:Ruby

http://www.cnblogs.com/coderlee/archive/2008/01/17/1042831.html



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:

 

评分:0

我来说两句

Open Toolbar