3

RubyにPerlに相当するENDブロックはありますか? Perl では、END ブロックを指定すると、プログラムがどこで脱落しても、そのブロック内のコードが実行されます。開いているファイル ハンドルを閉じるための優れた機能です。Ruby は同様の機能をサポートしていますか? Ruby の「END{}」ブロックを試してみましたが、エラーが原因でコードに exit があった場合、呼び出されないようです。

ありがとう!

4

2 に答える 2

3

at_exit例外が発生したかどうかに関係なく実行される を使用します。

at_exit { puts 'exited!' }
raise

期待どおり「終了」を出力します。

を使用できない場合にのみ、これを考慮する必要があります。これはensureat_exitロジックが実際の終了が発生する場所から遠く離れた場所に存在するためです。

于 2012-07-30T03:32:00.097 に答える
1

はい。ブロックには「ensure」句が含まれる場合があります。次に例を示します。

begin
  # This will cause a divide by zero exception
  puts 3 / 0
rescue Exception => e
  puts "An error occurred: #{e}"
ensure
  puts "I get run anyway"
end

これを実行すると、次のようになります。

An error occurred: divided by 0
I get run anyway
于 2012-07-30T03:04:14.603 に答える