2013-10-16 38 views
0

我是坚持使用开始救援结束与if-else-end。请参阅下面的代码片段。红宝石开始救援结束与if-then-else

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 

在开始块,如果没有引发异常,那么如果其他将得到执行,并返回true或false来FN1。这没有问题。

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

任何指针请。谢谢。

回答

1

如果要终止程序(而不是从fn2?刚回来),你可以使用Kernel#exit,例如:

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