Ruby用if-then-else开始救援结束

时间:2013-10-16 17:20:37

标签: ruby function rescue

我很喜欢使用if-else-end的begin-rescue-end。请参阅下面的代码段。

def fn1
    unless fn2?
        puts "Message 1"
        return
    end

    puts "Message 2"
end

def fn2?
    begin
        <do action>
    rescue
        <handle error here>
        puts "Message 3"
        return
    end

    if <condition>
        puts "Message 4"
        return true
    else
        puts "Message 5"
        return false
    end
end

在begin块中,如果没有引发异常,则if-else将被执行并返回true或false给fn1。没问题。

但是在开始块中,如果出现异常,我想打印“消息3”并结束程序,而不打印“消息1”。

请指点。感谢。

1 个答案:

答案 0 :(得分:1)

如果您要终止该计划(而不是仅从fn2?返回),您可以使用Kernel#exit,例如:

begin
    <do action>
rescue
    <handle error here>
    puts "Message 3"
    exit(1)
end