Также обратите внимание, что вы можете записать их в виде однострочных операторов: fail "Password too short" if password.length < 8иfail "No user name set" unless username
PhilT
Ответы:
136
В Ruby failэто синоним raise. failКлючевое слово является методом Kernelмодуля , который входит в классе Object. failМетод вызывает ошибку во время выполнения так же , как raiseключевое слово.
У failметода есть три перегрузки:
fail: вызывает RuntimeErrorбез сообщения об ошибке.
fail(string): вызывает RuntimeErrorсо строковым аргументом как сообщение об ошибке:
fail "Failed to open file"
fail(exception [, string [, array]]): вызывает исключение класса exception(первый аргумент) с необязательным сообщением об ошибке (второй аргумент) и информацией обратного вызова (третий аргумент).
Пример: Предположим, вы определяете функцию, которая должна завершиться ошибкой при неверном аргументе. Лучше поднимать, ArgumentErrorа не RuntimeError:
fail ArgumentError, "Illegal String"
Другой пример: вы можете передать всю трассировку в failметод, чтобы получить доступ к трассировке внутри rescueблока:
fail ArgumentError, "Illegal String", caller
caller- это метод ядра, который возвращает трассировку в виде массива строк в форме file:line: in 'method'.
Без аргументов вызывает исключение в $! или вызывает RuntimeError, если $! равно нулю. С одним аргументом String вызывает RuntimeError со строкой в виде сообщения. В противном случае первым параметром должно быть имя класса Exception (или объекта, который возвращает объект Exception при отправке сообщения об исключении). Необязательный второй параметр устанавливает сообщение, связанное с исключением, а третий параметр представляет собой массив информации обратного вызова. Исключения улавливаются условием восстановления блоков begin ... end.
+1 за рекомендации по стилю; даже если они семантически идентичны, использование каждого из них в предполагаемой настройке помогает лучше передать намерение
fatuhoku
26
fail == raise
Другими словами, failэто просто популярный псевдоним raiseметода повышения ошибок. Применение:
www.ruby-doc.org - ваш друг. Когда я погуглил, rubydoc fail" Ядро " было первым хитом. Мой совет: в случае сомнений, обращайтесь к исчерпывающим источникам подобных определений.
raise
при обработке исключений, аfail
когда нет.fail "Password too short" if password.length < 8
иfail "No user name set" unless username
Ответы:
В Ruby
fail
это синонимraise
.fail
Ключевое слово является методомKernel
модуля , который входит в классеObject
.fail
Метод вызывает ошибку во время выполнения так же , какraise
ключевое слово.У
fail
метода есть три перегрузки:fail
: вызываетRuntimeError
без сообщения об ошибке.fail(string)
: вызываетRuntimeError
со строковым аргументом как сообщение об ошибке:fail "Failed to open file"
fail(exception [, string [, array]])
: вызывает исключение классаexception
(первый аргумент) с необязательным сообщением об ошибке (второй аргумент) и информацией обратного вызова (третий аргумент).Пример: Предположим, вы определяете функцию, которая должна завершиться ошибкой при неверном аргументе. Лучше поднимать,
ArgumentError
а неRuntimeError
:fail ArgumentError, "Illegal String"
Другой пример: вы можете передать всю трассировку в
fail
метод, чтобы получить доступ к трассировке внутриrescue
блока:fail ArgumentError, "Illegal String", caller
caller
- это метод ядра, который возвращает трассировку в виде массива строк в формеfile:line: in 'method'
.Источник: Документация Ruby по модулю ядра .
источник
raise
Рубокоп говорит об использовании обоих слов;
Вот пример.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
источник
fail
==raise
Другими словами,
fail
это просто популярный псевдонимraise
метода повышения ошибок. Применение:fail ArgumentError, "Don't argue with me!"
источник
www.ruby-doc.org - ваш друг. Когда я погуглил,
rubydoc fail
" Ядро " было первым хитом. Мой совет: в случае сомнений, обращайтесь к исчерпывающим источникам подобных определений.источник