李超

cc编程笔记本。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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


异常类的结构

 
异常类
  • Object

  • posted on 2008-01-17 13:24  coderlee  阅读(3738)  评论(0编辑  收藏  举报