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. ...
随机推荐
- Shell 字符串处理、获取文件名和后缀名
http://blog.csdn.net/guojin08/article/details/38704823
- python中数据分析常用函数整理
一. apply函数 作用:对 DataFrame 的某行/列应用函数之后,Apply 返回一些值.函数既可以使用默认的,也可以自定义.注意:在第二个输出中应用 head() 函数,因为它包含了很多行 ...
- Beta发布--PSP DAILY软件功能说明书2.0
一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: 2.本周进度条,包含从开始到现在 ...
- datetime类型转换
Select CONVERT(varchar(100), GETDATE(), 8):14:53:14 Select CONVERT(varchar(100), GETDATE(), 9): 06 ...
- 第二次作业<2>
自学计划 应为对网络的教程并不了解,所以-- 我扒了一遍同学的博客,找到了两个课程. 慕课网 和 这个. 选择这两个教程主要是深入浅出,比较合理. 开始先两个课程相互应证,多了解以后可能会选择一个.虽 ...
- Objective-C UIWebView添加脚视图
- (void)addObserverForWebViewContentSize{ [self.webView.scrollView addObserver:self forKeyPath: cont ...
- Current request is not a multipart request
1. 文件上传需要在form表单中添加<form enctype="multipart/form-data"> 2. SpringMVC默认是关闭fileupload功 ...
- TCP连接 三次握手 四次挥手
前言: TCP协议是面向连接.安全可靠.基于字节流的传输层协议,在进行http协议访问时就用到了tcp连接.在建立TCP连接时需要经历三次握手,断开连接时需要经历四次挥手.在此进行记录. 内容: TC ...
- python基础(四)文件操作和集合
一.文件操作 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 1.文件基本操作: f = open('file.txt','r') # ...
- lr几个常用的函数
将字符串保存为参数 lr_save_string("string you want to save", "arg_name"); 将int型数字保存为参数 lr ...