Ruby 退出和中止有什么区别?
文件上说,Ruby 退出和中止有什么区别?,ruby,exit,Ruby,Exit,文件上说,abort将 通过调用Kernel.exit(false)立即终止执行 “立即”到底是什么意思?abort和exit状态为非true的区别是什么?“描述了您想知道的一切 简言之: 立即“退出”脚本并将code返回到操作系统,但是,在执行此操作之前,它会在退出时调用代码可能已注册的任何已注册处理程序 执行相同的操作,但立即退出,在_exit处不调用任何处理程序 获取一条消息,该消息将在退出前打印到STDERR,故障代码=1 不同的退出代码值几乎不适合检测问题和调试代码。然而,它们的使
abort
将
通过调用Kernel.exit(false)立即终止执行
“立即”到底是什么意思?abort
和exit
状态为非true
的区别是什么?“描述了您想知道的一切
简言之:
- 立即“退出”脚本并将
返回到操作系统,但是,在执行此操作之前,它会在退出时调用代码可能已注册的任何已注册code
处理程序
- 执行相同的操作,但立即退出,在_exit处不调用任何
处理程序
- 获取一条
,该消息将在退出前打印到STDERR,故障代码=1消息
退出
和退出代码>
如果您可以花费更多的时间,使错误检查更加健壮,那么您将需要一些严重的错误消息,而不仅仅是代码。传统上,如果STDERR存在,您可以将它们打印到STDERR。您可以通过正常的puts
手动打印到STDERR,但退出代码仍将在最低级别使用
打印到STDERR不会自动将作业标记为失败,因此创建了abort
以允许您轻松地写入和退出。默认退出代码1足以标记失败条件,因为它假定所有真实的上下文信息都将包含在您提供的错误消息中
还要注意的是,任何未经处理的异常,例如在任何地方都不进行营救的情况下引发“wtf”
,实际上表现得就像调用内核.abort
:它们打印到STDERR并使用exitcode=1
您说的是退出(false),但文档中说参数是要使用的状态代码
我刚刚在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
这真的让我吃惊,因为我假设
false
会被传统的C方式强制为0
。所以,也许你更应该使用像0
或1
这样的整数来清楚地知道将使用什么代码。你能提供示例吗。。。你的每一句话?这会让这个答案更有帮助。@阿鲁克拉希特:我实际上在编辑的中间,写着:“好,那就继续吧!”所以我认为,exit
是终止程序的一般方法<代码>中止如果您要提供一条消息和退出代码,并且退出代码1
没有问题,则存在此问题<代码>退出代码>允许您在退出时跳过
处理程序。但是,无法查看该用例。exit(false)
是一个引用,您必须使用它的简化版本。此外,您链接的内容还说:“Unix世界有一个惯例,退出代码等于0表示程序成功。任何其他退出代码都表示某种失败。”这同样适用于windows
。一个有用的帖子是-