Uau! Bom achado! Pena que eles não apenas sobrecarregaram a saída com essa funcionalidade ... #
Mike Stone
56
Observe que abortar sai do programa com um status false que representa uma falha. exit por padrão sai com um status true que representa sucesso. Certifique-se de usar o caminho certo para a situação.
precisa
1
ré. No comentário de Mike Stone, às vezes parece que Ruby foi escrito por uma equipe de pessoas que não tinham comunicação entre si, não é? (Ainda assim, é tão fácil de programa nele.)
JellicleCat
24
Se você deseja denotar um erro real no seu código, pode gerar uma RuntimeErrorexceção:
raise RuntimeError,'Message goes here'
Isso imprimirá um rastreamento de pilha, o tipo de exceção que está sendo gerada e a mensagem que você forneceu. Dependendo dos usuários, um rastreamento de pilha pode ser muito assustador e a mensagem real pode se perder no barulho. Por outro lado, se você morrer devido a um erro real, um rastreamento de pilha fornecerá informações adicionais para depuração.
Você não precisa mencionar o RuntimeError para gerar uma (é o tipo padrão de exceção gerada), portanto o código a seguir será suficiente: raise 'Message goes here'
sunaku 17/03/10
sunaku - enquanto seu comentário é perfeitamente válido, muitas vezes descobri que ser mais explícito pode ser útil, principalmente para outras pessoas que leem o código posteriormente.
precisa saber é
2
Nunca ouvi falar dessa função, mas seria trivial o suficiente para implementar ...
def die(msg)
puts msg
exit
end
Então, se isso está definido em algum arquivo .rb que você inclui em todos os seus scripts, você é ouro ... só porque não está embutido não significa que você não pode fazer isso sozinho ;-)
Acontece que o 'aborto' função faz isso (ver minha resposta abaixo)
Chris Bunch
1
Por que escrever código quando a função abortar faz isso por você?
Gary Haran
2
@ChrisBunch Esta é não o mesmo que a função abort: exitpadrões para retornar como se foi bem sucedida. abortretorna uma falha. exit 1retornará uma falha também.
TemporalWolf
2
Cheguei aqui procurando uma maneira de executar algum código sempre que o programa termina. Encontrou isto :
Kernel.at_exit { puts "sayonara"}# do whatever# [...]# call #exit or #abort or just let the program end# calling #exit! will skip the call
Chamado várias vezes registrará vários manipuladores.
puts
gravações para stdout, enquantodie
escreve para stderr, então:$stderr.puts "Message goes here"
.sys.exit("Message goes to stderr")
.Respostas:
A
abort
função faz isso. Por exemplo:Nota: a
abort
mensagem será gravada emSTDERR
oposição àputs
qual será gravadaSTDOUT
.fonte
Se você deseja denotar um erro real no seu código, pode gerar uma
RuntimeError
exceção:Isso imprimirá um rastreamento de pilha, o tipo de exceção que está sendo gerada e a mensagem que você forneceu. Dependendo dos usuários, um rastreamento de pilha pode ser muito assustador e a mensagem real pode se perder no barulho. Por outro lado, se você morrer devido a um erro real, um rastreamento de pilha fornecerá informações adicionais para depuração.
fonte
Nunca ouvi falar dessa função, mas seria trivial o suficiente para implementar ...
Então, se isso está definido em algum arquivo .rb que você inclui em todos os seus scripts, você é ouro ... só porque não está embutido não significa que você não pode fazer isso sozinho ;-)
fonte
exit
padrões para retornar como se foi bem sucedida.abort
retorna uma falha.exit 1
retornará uma falha também.Cheguei aqui procurando uma maneira de executar algum código sempre que o programa termina.
Encontrou isto :
Chamado várias vezes registrará vários manipuladores.
fonte