# 错误分类 [TOC] PHP中的错误分类分为三块:**语法错误**、**运行时错误**、**逻辑错误** >[success] 语法错误 > 是指由于违反了语言的有关规则而产生的错误。程序运行之前,都要先检查语法。如果语法有错误,就会立即报错,并且不会去执行程序代码。如:语句结尾少了一个分号、函数调用少了半个括号等 >[success] 运行时错误 > 是指程序运行过程中产生的错误。“运行时错误”又分为三种情况:“提示性错误”、“警告性错误”、“严重性错误” >[success] 逻辑错误 > 是指程序运行得到的实际结果和预期结果不一致。“逻辑错误”通常是由于人为的错误的算法设计而引起的。对于“逻辑错误”,系统通常无法自动检测,只能通过验证结果的正确性来判断是否存在逻辑错误 ## 常见错误代号 ![](https://box.kancloud.cn/646a39285260c66bf025713a2b2c745f_1107x386.png) ## 错误触发分类 >[success] **系统错误触发** > 程序运行到某行代码,确实出现了某种错误,此时系统就会自动报错,这就是触发了系统错误。系统错误是自动触发的 > **自定义错误触发** > 根据程序的运行需要,用户自已触发错误。用户级别的错误包含:E\_USER\_NOTICE(用户提示性错误)、 E\_USER\_WARNING(用户警告性错误)、E\_USER\_ERROR(用户致命错误) ## 用户错误触发函数 trigger\_error 描述:产生一个用户级别的 error/warning/notice 错误信息。 语法:**bool trigger\_error ( string $error\_msg \[, int $error\_type \] )** 参数: * [ ] $error\_msg:用户自定义的错误信息,长度限制在了1024个字节。 * [ ] $error\_type:用户自定义的错误等级类型。仅 E\_USER 系列常量对其有效,默认是 E\_USER\_NOTICE。 >[danger] 注意:trigger\_error()只会抛出用户自定义的逻辑错误,系统错误不会抛出,如果指定了不合法的错误类型返回 FALSE ,正确则返回 TRUE ![](https://box.kancloud.cn/0f970f92fc3f1719537cd5d4344216a1_924x587.png) ## 错误是否显示 ini\_set 如果有错误发生,那么系统是自动显示到页面,对于错误显示我们也是可以手动控制 全局修改:修改PHP.ini配置文件:display\_errors = On 修改为 **display\_errors = off** 对整个程序生效 局部修改:**ini\_set('display\_error',0)** **局部只对当前页面生效** ![](https://i.loli.net/2019/06/10/5cfe105fcc7dc79321.png) ![](https://i.loli.net/2019/06/10/5cfe11445636718255.png) >[danger] 注意:语法错误无法屏蔽,语法错误无法屏蔽,语法错误无法屏蔽! ## 控制显示那些错误 error\_reporting 全局设置:通过PHP的配置文件php.ini中的error\_reporting配置项,可以控制哪些错误显示。 局部设置:如果只想控制本网页的错误显示,通过PHP函数ini\_set()来进行设置,不会屏蔽语法错误。 局部设置:如果只想控制本网页的错误显示,通过PHP函数error\_reporting()来进行设置 ## 日志 >[success] 如果程序触发了错误,默认情况下是不会将错误记录保存起来,需要我们手动去修改PHP.ini文件开启日志保存功能 开启日志修改php.ini配置文件:log\_errors = off 日志保持地址修改php.ini配置文件:error\_log = log.log ![](https://i.loli.net/2019/06/10/5cfe29eebe69d69119.png) ![](https://i.loli.net/2019/06/10/5cfe29e189d6a55281.png)