如果异常处理范围是整个方法体,可以省略begin和end,直接写rescure和ensure部分的程序,不过要写在最后,避免后面的方法体内容被跳过。
def foo 方法体 rescure => ex 异常处理 ensure 后处理 end
范例:
begin input = File.open("liuyang.txt") input.each do |line| printf("%s,%d", line, line.size) end input.close a =1 printf("\n%d\n", a)rescue => ex puts "**************" puts ex.message #message : 异常信息 puts ex.backtrace #backtrace / [email protected] : 异常的位置信息 sleep(3) retry #使用retry后,begin一下的处理会再重新做一遍ensure puts "no matter what happened , execute" #不管是否发生异常,这需要执行end
时间: 2024-10-25 01:46:10