que*_*atl 43
" 退出,退出!中止,提升......让我离开这里! "描述了我想要知道的一切.
简而言之:
Kernel.exit(code)"立即退出"脚本并返回code到操作系统,但是,在执行操作之前,它会调用at_exit您的代码可能已注册的任何已注册的处理程序.Kernel.exit!(code)做同样的事情,但立即退出,没有at_exit召集人.Kernel.abort(message)取message,将仅有一个故障代码= 1退出之前被打印到stderr.不同的退出代码值几乎不适合检测问题和调试代码.但是,它们使用起来非常简单,并且使父进程读取它们几乎是微不足道的.因此,exit和exit!.
如果您可以花费更多时间并使错误检查更加健壮,那么您将需要一些严重的错误消息,而不仅仅是代码.传统上,如果存在,您可以将它们打印到STDERR.您可以通过正常手动打印到STDERR puts,但退出代码仍将在最低级别使用.
打印到STDERR并不会将作业自动标记为失败,因此,abort创建该作业是为了让您轻松编写和退出.默认退出代码1足以标记FAIL条件,因为假设所有真实的上下文信息都将包含在您提供的错误消息中.
还要注意,任何raise "wtf"无法处理的异常,例如没有rescue任何地方,实际上就像调用一样Kernel.abort:它们打印到STDERR并使用exitcode=1.
你说exit(false)但exit!文档说status code要使用该参数.
我刚刚在Windows和Ruby 1.9.3上检查过:
exit 0 # quits with code: 0
exit 1 # quits with code: 1
exit false # quits with code: 1
exit true # quits with code: 0
Run Code Online (Sandbox Code Playgroud)
这让我感到惊讶,因为我认为这false将以0传统的C方式被强制执行.所以,也许您应该使用整数,0或者1非常清楚将使用哪些代码.
| 归档时间: |
|
| 查看次数: |
30567 次 |
| 最近记录: |