Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 退出和中止有什么区别?_Ruby_Exit - Fatal编程技术网

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
。一个有用的帖子是-