require
が失敗したときに発生するLoadError
例外をキャッチすべくこのようなコードを書いたが、うまくいかなかった。
begin
require "hogehoge"
rescue
puts "LoadError!"
puts "Install hogehoge gem before running this code."
exit
end
# do something
どうやらrescue
節に何も指定しなかった場合、StandardErrorの例外のみをキャッチするらしい。LoadError
はScriptError
のサブクラスであり、StandardErrorとは異なる継承ツリーにいる。
先ほどのコードを次のように変更すればLoadError
をキャッチできるようになるというわけ。
begin
require "hogehoge"
rescue LoadError
puts "LoadError!"
puts "Install hogehoge gem before running this code."
exit
end
# do something