异常处理的结构:

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

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

 1ruby 中的异常处理 begin
 2ruby 中的异常处理     puts 
 3ruby 中的异常处理     puts "file: #{name = ARGV.shift}"
 4ruby 中的异常处理     file = open(name)
 5ruby 中的异常处理     i = 0
 6ruby 中的异常处理     file.read.each_line{|line| puts "#{i+=1}.#{line}" }
 7ruby 中的异常处理 rescue
 8ruby 中的异常处理      puts "error:#{$!} at:#{$@}"
 9ruby 中的异常处理 ensure
10ruby 中的异常处理    file.close
11ruby 中的异常处理 end
end
上面的小程序读入一个指定的文件并加入行号进行输出,当产生错误时会输出错误信息以及提示,可以故意输入一个不存在的文件名。
其实 begin相当于c#的try rescue相当于c#的catch ensure相当于c#的 finaly raise相当于c#的 throw
异常类的结构为:

相关文章: