PHP中的错误处理机制
常见的三种错误:
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中的错误处理机制的更多相关文章
- javascript中的错误处理机制
× 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...
- Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制
本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...
- php 中的错误处理机制
php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误. set_error_handler( ...
- windows核心编程---第一章 谈谈windows中的错误处理机制
我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Win ...
- 《windows核心编程系列》一谈谈windows中的错误处理机制
错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Windows除 ...
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- php中错误处理机制
php中,异常处理机制是有限的,无法自动抛出异常,必须手动进行,并且内置异常有限. php把许多异常看作错误,这样就可以把这些异常想错误一样用set_error_handler接管,进而主动抛出异常. ...
- PHP中的错误处理、异常处理机制详解
在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); / ...
- linux系统编程之错误处理机制
在讲解liunx错误处理机制之前我们先来看一段代码: #include<sys/types.h> #include<sys/stat.h> #include<fcntl. ...
随机推荐
- 客户端怎么查看SVN的代码库
安装SVN客户端,比如TortoiseSVN,然后将代码库checkout到本地,或者通过客户端的版本库浏览器直接连接SVN服务器查看代码库的目录结构. 如果SVN服务器端安装的时候是和Apache集 ...
- IIS、nginx、apache只允许域名访问配置
您开启WAF后,攻击者只能看到WAF的IP,不能看到您的IP,攻击者通过域名访问您的网站时,就会根据规则拦截. 但是如果您的网站可以输入IP地址直接访问,是无法达到防御效果的.比如(http://42 ...
- [知了堂学习笔记]_eclipse引入svn插件,并将项目同步到svn
1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...
- JavaScript的三种类型检测typeof , instanceof , toString比较
1.typeof typeof是js的一个操作符,在类型检测中,几乎没有任何用处. typeof 返回一个表达式的数据类型的字符串,返回结果为javascript中的基本数据类型,包括:number. ...
- linux_mount相关故障
fstab修改错误导致系统无法启动故障修复方案 1. 维护模式或救援模式 2. mount -o rw,remount 挂载点 # 这个方式也可以解决有些分区只能读的故障 3. 然后修改 /etc/f ...
- common-logging--源码之SimpleLog
common-logging源码Log接口 在common-logging的源码中,将log核心类抽象成了一个Log接口. 这里贴出Log接口的源码: /* * Licensed to the Apa ...
- Linux指令--cat,tac
原文出处:http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内 ...
- 小白成长系列--HTTP协议(一)
序:小白成长系列是笔者使用最简单易懂的逻辑来解释常见的计算机相关知识,不仅理解,还让你记忆深刻\(^o^)/ 先理解什么是协议? 协议就是双方要做某件事情而制定的规则,而且双方必须要遵从协议所约定的内 ...
- 小白的Python之路 day5 re正则模块
re正则模块 一.概述 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,要讲他的具体用法要讲一本书!它内嵌在Python中,并通过 re 模块实现.你可以为想要匹配的相应字符串 ...
- 【转】MATLAB图形句柄(二)
MATLAB图形句柄 1.1 图形对象及其句柄 1.2 图形对象属性 1.3 图形对象的创建 1.1 图形对象及其句柄 1.图形对象 MATLAB的图形对象包括计算机屏幕.图形窗口.坐标轴 ...