首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exit、exit()、exit(0)、die()、die(0) -如何退出脚本

exit、exit()、exit(0)、die()、die(0) -如何退出脚本
EN

Stack Overflow用户
提问于 2011-11-07 09:38:41
回答 7查看 82.9K关注 0票数 83

我相信所有这些(甚至是die()die(0))都是相同的。如果它们不完全相同,哪一个是成功退出脚本的首选选项?如果它们是相同的,是否有任何首选标准来指示成功的脚本完成?我倾向于使用exit;

编辑:所有的答案都有"die()exit()是相同的“,尽管我在我的问题中说了这一点。我更新了标题,希望能更清楚地表明这不是我的问题。我想从命令行脚本中清楚地表明成功。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-11-07 09:53:29

这些都是相同的。我很确定die()只是exit()的一个直接别名,但即使不是,它的行为也是一样的。

当这些函数中的一个函数被赋予字符串参数时,它会在终止进程之前打印出字符串。当它遇到一个小于255的整数时,该整数被认为是进程的返回码,它被传递回调用PHP脚本的进程。这在编写命令行应用程序时特别有用(PHP不仅仅是web应用程序!)。

至于exitexit()exit(0)之间的区别,实际上是没有区别的。前两者绝对没有区别,因为从技术上讲,exit是一种语言构造,而不是函数,因此可以像echo一样,使用括号或不使用括号来调用它。返回0代码意味着“这个程序运行成功/没有错误”,虽然我不知道当你没有传递参数时到底会发生什么,但PHP.net说没有参数的exit表示成功,所以我打赌它返回0,尽管PHP.net没有显示参数的默认值。

票数 69
EN

Stack Overflow用户

发布于 2011-11-07 09:48:12

正如一些人所提到的,die()和exit()是完全相同的。

如果您查看PHP documentation,您会发现有两个参数选项:

  • 一个数值。只有当您从命令行使用PHP而不是web服务器时,这才是有用的。零值表示成功。非零表示出现故障情况。
  • 字符串值。这将在退出时显示给浏览器。

我建议使用异常和自定义top-level exception handler来管理失败情况,而不是使用die()或exit()。

通过这种方式,您可以更灵活地执行诸如自动错误记录之类的操作。此外,如果使用PHP实现JSON API,则此异常处理程序可以返回一个有效的、指示错误的JSON代码片段。

票数 6
EN

Stack Overflow用户

发布于 2013-05-28 23:56:58

我想说的是,就更好的语义而言,die($arg);应该用于异常或意外的终止,即使是在-of过程中-你仍然可以捕捉到它。exit($arg);应该用于进程的正常(预期/受控)结束,就像在forwhileswitch结构的break;中一样,但有一个明确的结束。

不管怎样..我个人经常使用一个通用的if { } else { }结构来控制巨大进程或输出缓冲的不同分支,这样就不必使用“if { } else { }”。

我还在简单的错误捕捉语义中使用了die($arg),如

$db = mysql_connect([$args]) or die ($error); ...

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8031921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档