首页 / PHP / php – 如何优雅地死?
php – 如何优雅地死?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何优雅地死?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1982字,纯文字阅读大概需要3分钟。
内容图文
![php – 如何优雅地死?](/upload/InfoBanner/zyjiaocheng/828/0449fea730f44b2ca2af056aa1f042ed.jpg)
所以我刚读了Why to never use ‘or die’.
我比以前更困惑.我正在验证一个复杂的表单,我会通过if语句的多个嵌套级别,然后我会将一个变量传递给名为$status的表单,该表单只能是’new’或’edit’.然后,当用户再次提交要验证的表单时,表单将$status值作为隐藏字段($_POST)传递.我想确保用户不会意外地改变这个,所以我想抓住错误,如果“新”或“编辑”以外的东西通过. (虽然我想完全消除用户在理想世界中影响这个变量的可能性.)
所以我想我会在if语句中使用DIE()
<nested ifs>
Select ($status){
Case 'edit':
break;
Case 'new':
break;
default:
//using example from article
trigger_error("An error that should not occur has occurred", E_USER_ERROR);
break;
}
</nested ifs>
我真的不明白这比die()更干净吗?本质上我想调用另一个函数,向用户显示他们在这个时刻可以做些什么选项来修复错误,但我希望代码绝对停止运行,因为我不希望if语句进一步向下继续解析任何事情,当发现“新”或“编辑”以外的其他内容时会产生错误.
我不确定我有多清楚,所以请随时让我详细说明任何不明确的观点.
(或者更好的是,隐藏的用户字段是否可以被黑客入侵?如何预防?:P)
最佳答案:
trigger_error()触发由错误处理程序处理的错误.
使用trigger_error(),您可以优雅地处理错误,例如:
set_error_handler('ErrorHandler');
function ErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
print '<pre style="line-height: 2em;">';
printf("==> Error in `%s' line %s: %s\n\n", $filename, $linenum, $errmsg);
debug_print_backtrace();
print '</pre>';
exit($errno);
}
这是一个简单的例子,但是我们公司的网站显示了一个友好的错误页面并向我发送了一封电子邮件,我是一个白痴,并在某处搞砸了:-)
die()或exit()的优点应该是明确的:-)
当你需要退出时仍然可以使用exit().例如,当您生成模板时,输出该模板,并希望代码执行停止.或者当您发送标题时(‘Location:…’);标题,并希望确保执行停止…只是不要用它来处理意外情况(即错误).
trigger_error()还为您提供更好的控制程度.如果希望执行停止但是显示通知,则可以发送E_USER_NOTICE,如果希望执行停止,则可以发送E_USER_ERROR.
此外,您可以编写更复杂的错误处理函数,其中一些IP看到错误,其余的不会… Kindda对开发有用.
虽然过于复杂的错误处理程序,但要小心,错误处理程序内部会发生错误…?你可能已经看过Inception
内容总结
以上是互联网集市为您收集整理的php – 如何优雅地死?全部内容,希望文章能够帮你解决php – 如何优雅地死?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。