PHP:错误处理的控制流程是什么?
作者:互联网
我是PHP的新手,所以如果这看起来很愚蠢,我深表歉意.我四处搜寻,找不到任何能明确说明我所寻找的内容.
最终我有两个目标.
>在生产中,如果发生意外错误,请向用户显示默认的“哎呀”页面.
>发生预期的错误时,请在不死的情况下进行处理.
我对PHP错误处理的思维模型不够准确,以至于我无法满怀信心地前进,也找不到关于该过程的任何好的文档.
举一些人为的例子.
>用户发出请求,连接到数据库失败,我们显示一条oops消息.
>用户发出请求,脚本无法正确解析,我们显示一条oops消息.
>用户发出请求,我们使用乐观锁定向数据库查询更新.它失败,因此我们通知用户该对象已更新.
我认为我的大部分困惑都围绕着哪些错误导致脚本死亡以及哪些错误不导致(使用默认处理程序),以及当脚本死亡时,如何优雅地通知用户?
另外,任何标准的php函数/对象都使用异常吗?如果我选择使用更多的C风格处理异常,那么我在任何时候都不会感到惊讶吗?这会在PHP6中改变吗?如果是这样,我将花很多精力来解决使用c样式和异常之间的区别,但是如果没有,我宁愿在整个PHP5中始终使用c样式.除非我绝对需要,否则这不是我感兴趣解决的问题.
编辑:
我只是意识到内容与标题不太匹配.我想知道,当发生错误时,PHP的逻辑流程是什么?这样,我可以更好地了解如何实现有关PHP错误处理的目标.
解决方法:
PHP的大多数内置凝灰岩都会触发错误,这些错误在默认设置下是无法真正解决的.
但是,您可以通过设置自定义错误处理程序并引发异常而不是错误来解决此问题. (PHP会尽可能在内部处理错误之前运行您的处理程序,因此您实际上可以按常规方式捕获异常.)
我在这里的答案中写了一堆代码,可以用于这种情况:
PHP: exceptions vs errors?
如果php实际上无法解析您的文件,那么您就很费劲了,在大多数无法解析文件的情况下php都会崩溃.尽管您可以尝试编写自己的include函数,该函数将eval是文件,然后再包含它,并且如果eval失败,则跳过该文件.您需要确保您基本上可以信任文件.
标签:error-handling,php 来源: https://codeday.me/bug/20191210/2100331.html