Я хочу избежать ошибки, если require
не удалось.
Я могу сделать это с помощью:
begin
require 'unexisting_script'
rescue LoadError
end
Я попытался сделать то же самое с однострочным условием:
require 'unexisting_script' rescue LoadError
и получаю ошибку no such file to load -- unexisting_script (LoadError)
С другими исключениями/командами у меня нет проблем с однострочным спасением, это работает:
1 / 0 rescue ZeroDivisionError
Я также пытался заключить команду в скобки, но безуспешно:
(require 'unexisting_script') rescue LoadError
Я могу поместить все в одну строку с помощью ;
:
begin require 'unexisting_script'; rescue LoadError; end
а мне все равно интересно, почему самая короткая версия не работает.
Я нашел несколько связанных вопросов, но ни в одном из них не упоминается проблема с требованием и спасением:
- Почему работает этот синтаксис восстановления?
- Как использовать спасение в Ruby без начального и конечного блоков
Мой вопрос:
Могу ли я использовать rescue
в однострочном условии с require
? Если да: как? Если нет: Почему?