Ruby 中有 Perl 等效的 END 块吗?在 Perl 中,如果我指定一个 END 块,那么无论程序在哪里退出,都会执行该块中的代码。这是关闭打开文件句柄的强大功能。Ruby 是否支持类似的功能?我尝试了 Ruby 的“END{}”块,但如果由于错误而在代码中退出,它似乎不会被调用。
谢谢!
Ruby 中有 Perl 等效的 END 块吗?在 Perl 中,如果我指定一个 END 块,那么无论程序在哪里退出,都会执行该块中的代码。这是关闭打开文件句柄的强大功能。Ruby 是否支持类似的功能?我尝试了 Ruby 的“END{}”块,但如果由于错误而在代码中退出,它似乎不会被调用。
谢谢!
Use at_exit
,无论是否引发异常,它都会运行:
at_exit { puts 'exited!' }
raise
按预期打印“退出”。
仅当您不能使用ensure
, 时才应考虑这一点,因为这at_exit
会导致逻辑远离实际退出发生的位置。
是的。一个块可能有一个“确保”子句。这是一个例子:
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