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. ...
随机推荐
- setTimeout,setInterval运行原理
function a() { setTimeout(function(){alert(1)},0); alert(2); } a(); 和其他的编程语言一样,Javascript中的函数调用也是通 ...
- JAVA 键盘输入数组,输出数组内容和最大值、最小值
package shuzu; import java.util.Scanner; import java.util.Arrays; public class shuzu { /** * @param ...
- sql 中文转拼音首字母
http://blog.csdn.net/zhanglong_longlong/article/details/46772571 --可支持大字符集20000个汉字! create function ...
- 紧急求助!配置SMTP插件出错,SMTP connect() failed
http://bbs.csdn.net/topics/390848222 我来挖个坟.我知道问题所在了,只要你们本地或服务器上环境中只要确保开启了php_openssl 跟 php_socket等扩展 ...
- Python3 的函数
1.编写power(x,y)函数返回x的y次幂值 def power(x,y): return x**y 2.求最大公约数 def gcd(x,y): r=x%y x=y y=r if r==0: p ...
- Asp.net mvc 中Action 方法的执行(三)
[toc] 前面介绍了 Action 方法执行过程中的一些主要的组件以及方法执行过程中需要的参数的源数据的提供以及参数的绑定,那些都可以看作是 Action 方法执行前的一些必要的准备工作,接下来便将 ...
- css FlexBox 弹性盒子常用方法总结
总结一下弹性盒子常用的方法,弹性盒子的功能强大,这次我做了兼容性的felxbox,虽然代码多了一点,但在项目时候可以直接复制过来用,同时在项目上线的时候,如果这时候弹性盒子出了兼容问题,那就可急了~ ...
- Javascript学习--时钟
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- javascript属性之get/set
var o = { get x(){ return 7; }, set x(val){ console.info("不能设置x的值"); } } o.x //7 读取x值的时候,会 ...
- GIT_linux服务器与本地环境构建
linux安装git包 很多yum源上自动安装的git版本为1.7,这里手动编译重新安装1:安装依赖包yum install curl-devel expat-devel gettext-devel ...