También tenga en cuenta que puede escribirlos como declaraciones de una sola línea: fail "Password too short" if password.length < 8yfail "No user name set" unless username
PhilT
Respuestas:
136
En Ruby, failes sinónimo de raise. La failpalabra clave es un método del Kernelmódulo incluido por la clase Object. El failmétodo genera un error en tiempo de ejecución al igual que la raisepalabra clave.
El failmétodo tiene tres sobrecargas:
fail: genera un RuntimeErrorsin mensaje de error.
fail(string): genera un RuntimeErrorcon el argumento de cadena como mensaje de error:
fail "Failed to open file"
fail(exception [, string [, array]]): genera una excepción de clase exception(primer argumento) con un mensaje de error opcional (segundo argumento) e información de devolución de llamada (tercer argumento).
Ejemplo: suponga que define una función que debería fallar si se le da un argumento incorrecto. Es mejor plantear un ArgumentErrory no un RuntimeError:
fail ArgumentError, "Illegal String"
Otro ejemplo: puede pasar todo el retroceso al failmétodo para poder acceder al rastro dentro del rescuebloque:
fail ArgumentError, "Illegal String", caller
calleres un método de Kernel que devuelve el backtrace como una matriz de cadenas en el formulario file:line: in 'method'.
Sin argumentos, plantea la excepción en $! o genera un RuntimeError si $! es nulo. Con un solo argumento String, genera un RuntimeError con la cadena como mensaje. De lo contrario, el primer parámetro debe ser el nombre de una clase de excepción (o un objeto que devuelve un objeto de excepción cuando se envía un mensaje de excepción). El segundo parámetro opcional establece el mensaje asociado con la excepción y el tercer parámetro es una matriz de información de devolución de llamada. Las excepciones están incluidas en la cláusula de rescate de los bloques begin ... end.
+1 para asesoramiento de estilo; incluso si son idénticos semánticamente, el uso de cada uno en su entorno previsto ayuda a transmitir mejor la intención
fatuhoku
26
fail == raise
En otras palabras, failes solo un alias popular para el raisemétodo de generación de errores. Uso:
www.ruby-doc.org es tu amigo. Cuando busqué en Google, rubydoc fail" Kernel " fue el primer éxito. Mi consejo es, en caso de duda, acudir a la fuente definitiva para obtener información sobre definiciones como esta.
raise
cuando maneja excepciones yfail
cuando no.fail "Password too short" if password.length < 8
yfail "No user name set" unless username
Respuestas:
En Ruby,
fail
es sinónimo deraise
. Lafail
palabra clave es un método delKernel
módulo incluido por la claseObject
. Elfail
método genera un error en tiempo de ejecución al igual que laraise
palabra clave.El
fail
método tiene tres sobrecargas:fail
: genera unRuntimeError
sin mensaje de error.fail(string)
: genera unRuntimeError
con el argumento de cadena como mensaje de error:fail "Failed to open file"
fail(exception [, string [, array]])
: genera una excepción de claseexception
(primer argumento) con un mensaje de error opcional (segundo argumento) e información de devolución de llamada (tercer argumento).Ejemplo: suponga que define una función que debería fallar si se le da un argumento incorrecto. Es mejor plantear un
ArgumentError
y no unRuntimeError
:fail ArgumentError, "Illegal String"
Otro ejemplo: puede pasar todo el retroceso al
fail
método para poder acceder al rastro dentro delrescue
bloque:fail ArgumentError, "Illegal String", caller
caller
es un método de Kernel que devuelve el backtrace como una matriz de cadenas en el formulariofile:line: in 'method'
.Fuente: Documentación de Ruby sobre el módulo Kernel .
fuente
raise
Rubocop dice sobre el uso de ambas palabras;
Aquí hay un ejemplo.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
fuente
fail
==raise
En otras palabras,
fail
es solo un alias popular para elraise
método de generación de errores. Uso:fail ArgumentError, "Don't argue with me!"
fuente
www.ruby-doc.org es tu amigo. Cuando busqué en Google,
rubydoc fail
" Kernel " fue el primer éxito. Mi consejo es, en caso de duda, acudir a la fuente definitiva para obtener información sobre definiciones como esta.fuente