0

我有点坚持使用 begin-rescue-end 和 if-else-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

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

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

请任何指点。谢谢。

4

1 回答 1

1

如果你想终止程序(而不是仅仅从 中返回fn2?),你可以使用Kernel#exit,例如:

begin
    <do action>
rescue
    <handle error here>
    puts "Message 3"
    exit(1)
end
于 2013-10-16T17:23:29.553 回答