Ruby 语法 begin rescue else end 使用 介绍
不经过else的例子
begin
1/0
rescue => e
puts "in rescue error is:#{e}"
else
puts "in else"
end
经过else的例子
begin
1/1
rescue => e
puts "in rescue error is:#{e}"
else
puts "in else"
end
也就是说,预计可能会报错,如果没有报错,就会走else的语句
使用的地方:报错和不报错 都会做某些类似事情的时候
上面的例子不是很贴切,没有体现else的用法,可以把esle去掉。
看一个ruby源码的例子:
x = Thread.current
y = Thread.start {
begin
sleep sec
rescue => e
x.raise e
else
x.raise exception, "execution expired" if x.alive?
end
}
yield sec
这里,waiting的时候,如果没有报错,也即是说没有异常的程序,表示时间到了,也要报错。
这样用的地方,就很合乎常理了。
。。。结束了。。。 END EOF
)
)
)
(
(
(