RubyにPerlに相当するENDブロックはありますか? Perl では、END ブロックを指定すると、プログラムがどこで脱落しても、そのブロック内のコードが実行されます。開いているファイル ハンドルを閉じるための優れた機能です。Ruby は同様の機能をサポートしていますか? Ruby の「END{}」ブロックを試してみましたが、エラーが原因でコードに exit があった場合、呼び出されないようです。
ありがとう!
RubyにPerlに相当するENDブロックはありますか? Perl では、END ブロックを指定すると、プログラムがどこで脱落しても、そのブロック内のコードが実行されます。開いているファイル ハンドルを閉じるための優れた機能です。Ruby は同様の機能をサポートしていますか? Ruby の「END{}」ブロックを試してみましたが、エラーが原因でコードに exit があった場合、呼び出されないようです。
ありがとう!
at_exit
例外が発生したかどうかに関係なく実行される を使用します。
at_exit { puts 'exited!' }
raise
期待どおり「終了」を出力します。
を使用できない場合にのみ、これを考慮する必要があります。これはensure
、at_exit
ロジックが実際の終了が発生する場所から遠く離れた場所に存在するためです。
はい。ブロックには「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