Commencer, de Sauvetage et d'Assurer à Ruby?

J'ai récemment commencé la programmation en Ruby, et je suis à la recherche sur la gestion des exceptions.

Je me demandais si ensure était le Rubis équivalent de finally en C#? Je devrais avoir:

file = File.open("myFile.txt", "w")

begin
  file << "#{content} \n"
rescue
  #handle the error here
ensure
  file.close unless file.nil?
end

ou dois-je faire cela?

#store the file
file = File.open("myFile.txt", "w")

begin
  file << "#{content} \n"
  file.close
rescue
  #handle the error here
ensure
  file.close unless file.nil?
end

Ne ensure être appelé de n'importe quoi, même si une exception n'est pas soulevée?

  • Aucune n'est bonne. En règle générale, lorsque vous traitez avec des ressources externes, vous toujours voulez que la ressource d'ouverture à l'intérieur de la begin bloc.
InformationsquelleAutor Lloyd Powell | 2010-02-03