Это на самом деле 3 часть вопроса:Как спасти психические исключения Ямла?
- Что все исключения Psych броски?
- Как вы узнаете, какие они есть, когда документация не докучает их перечислить?
- Пример кода, чтобы поймать все возможные исключения YAML.load_file?
Я бы не просил, не 3, но этот вопрос предполагает я встречу странные вопросы: Can't rescue YAML.load exception
Основываясь на этом вопросе How to know what exceptions to rescue
я получил:
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>'
Я ищу способы поймать всю эту ерунду. Независимо от причины сбоя, я хочу поймать его и отобразить сообщение, прежде чем оно вернется к основному коду обработки исключений.
Microsoft, который мне не особенно нравится, показывает все исключения для каждого класса, который они когда-либо писали. Пример: https://msdn.microsoft.com/en-us/library/b9skfh7s(v=vs.110).aspx
Перейти к редактированию вопроса –
Как насчет ERRNO :: SOMETHING, когда вы 'YAML.load_file', которого не существует? –
Как насчет ошибки sytax, когда вы не закрываете кавычки вокруг строки имени файла? :) В принципе, все может пойти не так, как надо, при загрузке файла. Я понял этот вопрос как относящийся к конкретным исключениям для Психотерапии. –