在Ruby中,异常处理和资源清理可以通过begin-rescue-finally
块来实现。begin-rescue-finally
块允许你在执行代码时捕获异常,并在异常发生时执行特定的代码块。finally
子句中的代码无论是否发生异常都会被执行,因此非常适合用于资源清理操作。
以下是一个简单的示例,展示了如何使用begin-rescue-finally
块进行资源清理:
require 'open-uri' def download_file(url, local_filename) begin # 尝试打开并读取URL内容 content = open(url) File.open(local_filename, 'wb') do |file| file.write(content.read) end rescue OpenURI::HTTPError => e # 处理HTTP错误异常 puts "Error: #{e.message}" rescue => e # 处理其他异常 puts "Error: #{e.message}" finally # 无论是否发生异常,都会执行此处的代码 if content content.close end puts "Resource cleanup completed." end end download_file("https://example.com/file.txt", "local_file.txt")
在这个示例中,我们尝试从给定的URL下载文件并将其保存到本地。我们使用begin-rescue-finally
块捕获可能发生的异常,如HTTP错误或其他异常。在finally
子句中,我们确保关闭已打开的资源(在这种情况下是content
对象),以便进行资源清理。