常见的三种错误:

1.Notice :通知性错误,最小的错误,当发生通知性错误时,会弹出一个提示信息。不会中断代码的执行。

错误代码:

#例如
Notice: in I:\www\abc\error.php on line

2.Warning:警告性错误,当发生警告性错误后,会弹出一个警告信息,他不会中断程序向下运行。

#例如
Warning: in I:\www\abc\error.php on line

3.Error:致命性错误,当发生致命性错误后,会弹出一个致命错误信息,中断程序执行。

#例如
Fatal error: in I:\www\abc\error.php on line

上面是常见的3中PHP中的错误,跟多详细错误看下面代码:

#查看更多错误,可以调用系统函数get_defined_constants这个函数
#简答的展示一些: echo "<pre>";
var_dump(get_defined_constants()); array() {
["E_ERROR"]=>
int()
["E_RECOVERABLE_ERROR"]=>
int()
["E_WARNING"]=>
int()
["E_PARSE"]=>
int()
["E_NOTICE"]=>
int()
["E_STRICT"]=>
int()
["E_DEPRECATED"]=>
int()
["E_CORE_ERROR"]=>
int()
["E_CORE_WARNING"]=>
int()
["E_COMPILE_ERROR"]=>
int()
["E_COMPILE_WARNING"]=>
int()
["E_USER_ERROR"]=>
int()
["E_USER_WARNING"]=>
int()
["E_USER_NOTICE"]=>
int()
["E_USER_DEPRECATED"]=>
int()
["E_ALL"]=>
int()
["DEBUG_BACKTRACE_PROVIDE_OBJECT"]=>
int()
["DEBUG_BACKTRACE_IGNORE_ARGS"]=>
int()
["TRUE"]=>
bool(true)
["FALSE"]=>
bool(false)
["NULL"]=>];
~~~~还有更多。

错误的触发:

可以分为两种:

1.系统自动触发

系统自动检查程序的编译以及执行,在出错的时候,自动给出错误提示。

2.手动触发:

PHP中手动触发可以调用系统函数,一般用来调试相应的错误程序,一般是用户级别的错误。

触发的函数:trigger_error

第一个参数可以设置错误提示信息,第二个参数可以设置错误的级别

E_USER_NOTICE:触发通知级别错误,最低级别的用户错误

E_USER_WARNING:触发警告级别的错误,后续代码继续执行

E_USER_ERROR:触发致命错误级别的错误,后续代码终止执行。

错误显示开关:

在php.ini中配置display_errors选项,默认为on,显示错误提示,在开发阶段建议设置on,便于项目的调试。产品上线设置为off,用户体验好,安全性高,该设置一直有效。

也可以在脚本中执行ini_set函数,设置dispaly_errors的值,只能在脚本生命周期内,无法修改php.ini文件时,可以采用该方式,脚本周期结束,选项恢复。

设置错误显示的级别:

设置错误报告的级别后,可以决定来显示什么级别的错误信息。

在php.ini中配置error_reporting选项,默认设置为显示所有的错误:

设置错误报告的级别后,可以决定来显示什么级别的错误信息。

E_ALL:显示所有的错误

E_NOTICE:显示通知性的错误

E_WARING:显示警告性的错误

E_ERROR:显示致命性的错误

同样也可以调用ini_set函数设置。

错误日志:

错误日志设置:
一般项目上线需要记录错误日志,用于检查系统错误,默认日志开关开启。

错误日志的默认路径

apache:

apache/logs/error.log

Nginx:

/var/log/nginx/error.log

自定义错误日志存储路径:
ini_set('error_log','路径');

只能设置一次有效,脚本生命周期结束,记录结束。

自定义错误处理处理器:

出现错误时,默认使用系统的错误处理机制来提示错误信息,可以提示什么级别的错误,错误提示字符串,发生错误的文件以及行号等。

可以自定义设置错误提示:

写一个自定义错误处理函数

my_error

有四个参数

$errCode:错误代号

$errStr:错误提示

$errFile:错误文件

$errLine:错误行号

默认不会调用,必须调用set_error_handler函数设置为系统自动调用这个函数。

先到这把,欢迎继续补充~~~,本人微信meng199898,转帖需备注

PHP中的错误处理机制的更多相关文章

  1. javascript中的错误处理机制

    × 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...

  2. Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制

    本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...

  3. php 中的错误处理机制

    php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误. set_error_handler( ...

  4. windows核心编程---第一章 谈谈windows中的错误处理机制

        我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义.       Win ...

  5. 《windows核心编程系列》一谈谈windows中的错误处理机制

    错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Windows除 ...

  6. 学习PDO中的错误与错误处理模式

    在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...

  7. php中错误处理机制

    php中,异常处理机制是有限的,无法自动抛出异常,必须手动进行,并且内置异常有限. php把许多异常看作错误,这样就可以把这些异常想错误一样用set_error_handler接管,进而主动抛出异常. ...

  8. PHP中的错误处理、异常处理机制详解

    在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); / ...

  9. linux系统编程之错误处理机制

    在讲解liunx错误处理机制之前我们先来看一段代码: #include<sys/types.h> #include<sys/stat.h> #include<fcntl. ...

随机推荐

  1. Oracle_建表

    Oracle_建表 --设计要求: --建立一张用来存储学生信息的表 --字段包含学号.姓名.性别,年龄.入学日期.班级,email等信息   create table student(        ...

  2. JavaScript之BST

    自己尝试用js实现了数据结构的二叉查找树. // node function Node(data) { this.data = data; this.lc = null; this.rc = null ...

  3. Hadoop集群的JobHistoryServer详解(转载)

    Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map.用了多少个Reduce.作业提交时间.作业启动时间.作业完成时间等信息.默认情况下 ...

  4. python-虎扑爬虫

    Python作为一个高级编程语言,不知从何时起就在圈子里流行起来了.个人也是图个鲜,跟上时代步伐学习了一下."鲁迅"说过:不能学以致用,就是耍流氓.我用python对虎扑论坛作了一 ...

  5. Spring @Scheduled 在tomcat容器里面执行两次

    今天在用spring里面的@Scheduled执行定时任务,但是发现到触发定时任务的时间点总会执行两次.原因是修改了tomcat conf包下面的server.xml文件导致的.配置如下: <H ...

  6. 汇编编译器(masm.exe)对jmp的相关处理

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  7. Linux安装mysql 在/etc下没有my.cnf 解决办法

    进入 /usr/share/mysql  将my-medium.cnf 移动到etc 并且改名为my.cnf

  8. Python 中if的使用

    reference  : https://docs.python.org/3/reference/expressions.html#conditional-expressions 6.11. Cond ...

  9. Tomcat对Struts中的Action进行授权利

    .应用的意义 在某些应用下,如果Action类执行的功能比较重要,可以对该Action类进行授权利以实现只有特定角色的用户能够访问,此时可以在struts-config.xml文件中进行配置   2. ...

  10. 关于oracle视图小结

    关于oracle的视图小记:一. 视图:就是对SQL语句的封装,使用起来更方便.不易出错 优点: 1.简化数据操作:视图可以简化用户处理数据的方式 2.着重于特定数据:不必要的数据或敏感的数据可以 不 ...