php 中的错误处理机制
php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误。
set_error_handler() 函数设置用户自定义的错误处理函数。函数用户创建运行期间用户自己的错误处理方法。它需要先创建一个错误处理函数,然后设置错误级别。
语法:
set_error_handler(error_function, error_types)
参数:
error_function:规定发生错误时运行的函数。必需。
error_types:规定在哪个错误报告级别会显示用户自定义错误。可选。默认为 “E_ALL”。
使用该函数,会完全绕过标准 php 错误处理函数(除非在错误处理函数中返回 false)。
示例:
function customError($errno, $errstr, $errfile, $errline)
{
echo "错误代码:[$errno] $errstr" . PHP_EOL;
echo "错误所在代码行:$errline 文件 $errfile" . PHP_EOL;
// die;
}
set_error_handler("customError"); 5/0;
输出:
错误代码:[2] Division by zero
错误所在代码行:15 文件 /xxx/test.php
在这里有一个需要说明的是:php 中的错误和异常是不一样的。php 中的错误默认是无法通过 try...catch 捕获的,如果我们想要捕获,可以在 error handler 里面捕获错误之后抛出一个异常。
我们也可以在某些地方使用 restore_error_handler 取消自定义的错误处理。
对于 fatal error:
如果我们也想对其进行一些处理,php 也提供了 register_shutdown_function,这个函数会在 php 程序终止或者 die 时触发一个函数。
对于 parse error,我们可以修改 php.ini 添加配置:
log_errors=On
error_log=usr/log/php.log
总结:
在 php 中,错误和异常是两个不同的概念,这种设计从根本上导致了 php 的异常和其他语言相异。Java 中,异常是错误唯一的报告方式。而 php 中异常绝大部分必须通过某种方法手动抛出,才能被捕获到,是一种半自动化的异常处理机制。
无论是错误还是异常,都可以使用 handler 接管系统已有的处理机制。
php 中的错误处理机制的更多相关文章
- javascript中的错误处理机制
× 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...
- Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制
本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...
- PHP中的错误处理机制
常见的三种错误: 1.Notice :通知性错误,最小的错误,当发生通知性错误时,会弹出一个提示信息.不会中断代码的执行. 错误代码: #例如Notice: 2.Warning:警告性错误,当发生警告 ...
- 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. ...
随机推荐
- 1、Ansible安装配置
ansible介绍: Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很 ...
- php 常用英语小汇
bstract抽象的 -挨伯丝拽克特 access存取.访问 -挨克色丝 account账户 -厄靠恩特 action动作 -爱克身 activate激活 -爱克特维特 active活动的 -爱克得 ...
- 【quickhybrid】JS端的项目实现
前言 API实现阶段之JS端的实现,重点描述这个项目的JS端都有些什么内容,是如何实现的. 不同于一般混合框架的只包含JSBridge部分的前端实现,本框架的前端实现包括JSBridge部分.多平台支 ...
- $.each()用法
通过它,你可以遍历对象.数组的属性值并进行处理. 使用说明 each函数根据参数的类型实现的效果不完全一致: 1.遍历对象(有附加参数) $.each(Object, function(p1, p2) ...
- 在Web Page中包含PHP代码
PHP代码可以出现在Web Page的任何位置,甚至在HTML的标签里面也可以.有4中方式在Web Page中包含PHP代码: 使用<?php ... ?>标签 <!doctype ...
- “Hello World!团队”Final发布—视频链接+文案+美工
视频发布:http://www.bilibili.com/video/av17022373/ 文案加美工:http://www.cnblogs.com/chjy/p/7990116.html SkyH ...
- 实验五 Java网络编程及安全 实验报告 20135232王玥
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序与设计 班级:1352 姓名:王玥 学号:20135232 成绩: 指导 ...
- 求int型数组和最大子数组 续
之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序 当子数 ...
- jsp九大内置对象之一request
request对象,目的是用来获取客户端的请求. 主要方法有: request.getMethod(); // 获取提交请求的方式 request.getPr ...
- GITHUB随笔 15-5月 junit
junit 是用来做单元测试的一个工具 测试是一个持续的过程.也就是说测试贯穿与开发的整个过程中,单元测试尤其适合于迭代增量式的开发过程. @ignore: 该元数据标记的测试方法在测试中会被忽 ...