0

私は、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

開始ブロックでは、例外が発生しない場合、if-else が実行され、fn1 に true または false が返されます。これで問題ありません。

しかし、開始ブロックでは、例外が発生した場合、「メッセージ 1」を出力せずに「メッセージ 3」を出力してプログラムを終了したいと考えています。

ポインタをください。ありがとう。

4

1 に答える 1

1

(単に から戻るのではなく) プログラムを終了したい場合は、次のようにKernel#exitfn2?を使用できます。

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