43 votes

Comment puis-je sauver d'un `require ': aucun fichier de ce type à charger en ruby?

J'essaie de sauver d'un `require': no such file to load in ruby afin d'indiquer à l'utilisateur de spécifier l'indicateur -I au cas où il l'aurait oublié. Fondamentalement, le code ressemble à:

 begin
  require 'someFile.rb'
rescue
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end
 

Je m'attendais à ce que la partie rescue reprenne l'exécution dans le cas où someFile.rb n'aurait pas été trouvé, mais mon hypothèse était fausse.

58voto

severin Points 4781

rescue sans arguments ne sauve que StandardError s. LoadError (généré par un fichier introuvable) n'est pas une StandardError mais une ScriptError (voir http://blog.nicksieger.com/articles/2006/09/06/rubys-exception-hierarchy ). Par conséquent, vous devez sauver explicitement LoadError , comme indiqué par MBO.

53voto

MBO Points 12516

Vous devez définir explicitement quelle erreur vous voulez sauver.

 begin
  require 'someFile.rb'
rescue LoadError
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X