Observe também que você pode escrevê-las como declarações de uma única linha: fail "Password too short" if password.length < 8efail "No user name set" unless username
PhilT
Respostas:
137
Em Ruby, failé sinônimo de raise. A failpalavra-chave é um método do Kernelmódulo incluído pela classe Object. O failmétodo gera um erro de tempo de execução, assim como oraise palavra chave.
O failmétodo tem três sobrecargas:
fail: gera um RuntimeErrorsem uma mensagem de erro.
fail(string): levanta um RuntimeErrorcom o argumento string como uma mensagem de erro:
fail "Failed to open file"
fail(exception [, string [, array]]): levanta uma exceção de classe exception(primeiro argumento) com uma mensagem de erro opcional (segundo argumento) e informações de retorno de chamada (terceiro argumento).
Exemplo: suponha que você defina uma função que deve falhar se for fornecido um argumento incorreto. É melhor criar um ArgumentErrore não um RuntimeError:
fail ArgumentError, "Illegal String"
Outro exemplo: você pode passar todo o backtrace para o failmétodo para que possa acessar o trace dentro do rescuebloco:
fail ArgumentError, "Illegal String", caller
calleré um método Kernel que retorna o backtrace como um array de strings no formulário file:line: in 'method'.
Sem argumentos, levanta a exceção em $! ou aumenta um RuntimeError se $! é nulo. Com um único argumento String, gera um RuntimeError com a string como uma mensagem. Caso contrário, o primeiro parâmetro deve ser o nome de uma classe Exception (ou um objeto que retorna um objeto Exception ao enviar uma mensagem de exceção). O segundo parâmetro opcional define a mensagem associada à exceção e o terceiro parâmetro é uma matriz de informações de retorno de chamada. As exceções são capturadas pela cláusula de resgate dos blocos begin ... end.
1 para aconselhamento de estilo; mesmo que sejam semanticamente idênticos, usar cada um em sua configuração pretendida ajuda a transmitir melhor a intenção
fatuhoku
26
fail == raise
Em outras palavras, failé apenas um apelido popular para raisemétodo de levantamento de erros. Uso:
www.ruby-doc.org é seu amigo. Quando eu pesquisei rubydoc fail" Kernel " foi o primeiro hit. Meu conselho é, em caso de dúvida, vá para a fonte definitiva de coisas de definição como esta.
raise
ao lidar com exceções efail
quando não.fail "Password too short" if password.length < 8
efail "No user name set" unless username
Respostas:
Em Ruby,
fail
é sinônimo deraise
. Afail
palavra-chave é um método doKernel
módulo incluído pela classeObject
. Ofail
método gera um erro de tempo de execução, assim como oraise
palavra chave.O
fail
método tem três sobrecargas:fail
: gera umRuntimeError
sem uma mensagem de erro.fail(string)
: levanta umRuntimeError
com o argumento string como uma mensagem de erro:fail "Failed to open file"
fail(exception [, string [, array]])
: levanta uma exceção de classeexception
(primeiro argumento) com uma mensagem de erro opcional (segundo argumento) e informações de retorno de chamada (terceiro argumento).Exemplo: suponha que você defina uma função que deve falhar se for fornecido um argumento incorreto. É melhor criar um
ArgumentError
e não umRuntimeError
:fail ArgumentError, "Illegal String"
Outro exemplo: você pode passar todo o backtrace para o
fail
método para que possa acessar o trace dentro dorescue
bloco:fail ArgumentError, "Illegal String", caller
caller
é um método Kernel que retorna o backtrace como um array de strings no formuláriofile:line: in 'method'
.Fonte: Documentação Ruby no Módulo Kernel .
fonte
raise
Rubocop fala sobre o uso de ambas as palavras;
Aqui está um exemplo.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
fonte
fail
==raise
Em outras palavras,
fail
é apenas um apelido popular pararaise
método de levantamento de erros. Uso:fail ArgumentError, "Don't argue with me!"
fonte
www.ruby-doc.org é seu amigo. Quando eu pesquisei
rubydoc fail
" Kernel " foi o primeiro hit. Meu conselho é, em caso de dúvida, vá para a fonte definitiva de coisas de definição como esta.fonte