【问题标题】:How to create an exit message如何创建退出消息
【发布时间】:2010-09-06 23:17:37
【问题描述】:

是否存在退出程序并显示消息的单行函数调用?我知道在 Perl 中它很简单:

die("Message goes here")

我已经厌倦了输入这个:

puts "Message goes here"
exit

【问题讨论】:

  • 一个小注释,你的puts写到stdout,而die写到stderr,所以:$stderr.puts "Message goes here"
  • 我知道这不是答案,但它回答了我的问题,谢谢
  • 仅供参考,在Python中为sys.exit("Message goes to stderr")

标签: ruby


【解决方案1】:

abort 函数执行此操作。例如:

abort("Message goes here")

注意:abort 消息将写入STDERR,而不是puts,后者将写入STDOUT

【讨论】:

  • 哇!很好的发现!太糟糕了,他们不只是用这个功能重载退出......
  • 注意,abort 以 false 状态退出程序,表示失败。 exit 默认退出,状态为 true 表示成功。确保根据情况使用正确的。
  • 重新。 Mike Stone 的评论,有时看起来 Ruby 似乎是由一群彼此没有交流的人编写的,不是吗? (不过,在其中编程非常容易。)
【解决方案2】:

如果您想在代码中指出实际错误,可以引发RuntimeError 异常:

raise RuntimeError, 'Message goes here'

这将打印堆栈跟踪、引发的异常类型以及您提供的消息。根据您的用户,堆栈跟踪可能太可怕了,实际消息可能会在噪音中丢失。另一方面,如果您因实际错误而死,堆栈跟踪将为您提供额外的调试信息。

【讨论】:

  • 你不需要提到 RuntimeError 来引发一个(这是引发的默认异常类型),所以下面的代码就足够了:raise 'Message goes here'
  • sunaku - 虽然您的评论是完全有效的,但我经常发现更明确可能很有用,特别是对于稍后阅读代码的其他人。
【解决方案3】:

我来这里是为了寻找在程序结束时执行某些代码的方法。
Found this:

Kernel.at_exit { puts "sayonara" }
# do whatever
# [...]
# call #exit or #abort or just let the program end
# calling #exit! will skip the call

多次调用将注册多个处理程序。

【讨论】:

    【解决方案4】:

    我从来没有听说过这样的功能,但是实现起来很简单......

    def die(msg)
      puts msg
      exit
    end
    

    然后,如果这是在您包含在所有脚本中的某个 .rb 文件中定义的,那么您就是金子......仅仅因为它不是内置的并不意味着您不能自己做;-)

    【讨论】:

    • 原来“中止”功能可以做到(见下面我的回答)
    • 当 abort 函数为您执行代码时,为什么还要编写代码?
    • @ChrisBunch 这与 abort 函数相同:exit 默认返回就好像它已经成功一样。 abort 返回失败。 exit 1 也会返回失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2012-05-14
    • 2015-12-23
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多