これは実際には3つの質問です。Psych Yamlの例外を救う方法は?
- Psychが例外として挙げるものは何ですか?
- 文書化しても問題がない場合は、どのようなものなのか、どのように知っていますか?
- 可能なすべてのYAML.load_file例外をキャッチするサンプルコード?
ノー3を求めるないだろうが、この質問を示唆私は奇妙な問題が発生します。この質問 How to know what exceptions to rescue
に基づいて Can't rescue YAML.load exception
を私が得た:
Psych::Exception
Psych::BadAlias
Psych::DisallowedClass
Psych::SyntaxError
しかし、私がそのコードをキャッチしようとすると、まだ失敗する
irb(main):002:0> begin
irb(main):003:1* YAML.load_file('test_file_does_not_exist')
irb(main):004:1> rescue Psych::Exception
irb(main):005:1> puts $!.message
irb(main):006:1> end
Errno::ENOENT: No such file or directory @ rb_sysopen - test
from /home/marko/.gem/ruby/2.3.1/gems/psych-2.1.0/lib/psych.rb:474:in `initialize'
from /home/marko/.gem/ruby/2.3.1/gems/psych-2.1.0/lib/psych.rb:474:in `open'
from /home/marko/.gem/ruby/2.3.1/gems/psych-2.1.0/lib/psych.rb:474:in `load_file'
from (irb):3
from /home/marko/.rubies/ruby-2.3.1/bin/irb:11:in `<main>'
私はすべてのナンセンスをキャッチする方法を探しています。障害の理由にかかわらず、私はそれを捕まえて、主要な例外処理コードに落ちる前にメッセージを表示したいと思う。
私が特に気に入らないマイクロソフトでは、これまでに書いたすべてのクラスのすべての例外を示しています。例:チェックする https://msdn.microsoft.com/en-us/library/b9skfh7s(v=vs.110).aspx
質問を編集しようとしています –
存在しない 'YAML.load_file'があった場合、ERRNO :: SOMETHINGはどうなりますか? –
ファイル名文字列の引用符を閉じないと、sytaxエラーはどうなりますか? :)基本的に何かがファイルを読み込む間に間違って行くことができます。私はPsych特有の例外を指しているとしてその問題を理解しました。 –