set_exception_handler函数在ThinkPHP中的用法


Posted in PHP onOctober 31, 2014

本文实例讲述了set_exception_handler函数在ThinkPHP中的用法。分享给大家供大家参考。具体方法如下:

函数:

string set_exception_handler ( callback $exception_handler )

定义和用法:
set_exception_handler() 函数设置用户自定义的异常处理函数。
该函数用于创建运行时期间的用户自己的异常处理方法。
该函数会返回旧的异常处理程序,若失败,则返回 null。

语法:
set_exception_handler(exception_function)

参数 描述
error_function 必需。规定未捕获的异常发生时调用的函数。 该函数必须在调用 set_exception_handler() 函数之前定义。 这个异常处理函数需要需要一个参数,即抛出的 exception 对象。

提示和注释:

提示:在这个异常处理程序被调用后,脚本会停止执行。

同样是在看TP代码的时候发现的这个函数,就想不明白了,自己以前咋就没关心过这些东西呢?(捶胸顿足ing。。。)
继续来看一下TP是怎么实现的,呃,为啥一定要用TP呢,嗯。那好吧,一会儿我把手册的例子也搬过来。

public function appException($e)

{

        halt($e->__toString());

}

set_exception_handler(array(&$this,"appException"));

呵呵,这个简单吧?因为我没有给出halt这个方法的实现,这样就足够了。
再看手册中的例子,
function exception_handler($exception) {

  echo "Uncaught exception: " , $exception->getMessage(), "n";

}

set_exception_handler('exception_handler');

throw new Exception('Uncaught Exception');

echo "Not Executedn";

其实呢,set_exception_handler就是设置了一下,当你的程序需要抛出一个异常的时候调用哪个自定义的函数。
就这么简单

注意事项:
set_exception_handler(“myException”) 不仅可以接受函数,还可以接受 类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
php获取POST数据的三种方法实例详解
Dec 20 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 #PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 #PHP
PHP页面实现定时跳转的方法
Oct 31 #PHP
Thinkphp多文件上传实现方法
Oct 31 #PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 #PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 #PHP
Laravel 4 初级教程之安装及入门
Oct 30 #PHP
You might like
Home Coffee Roasting
2021/03/03 咖啡文化
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
js模拟类继承小例子
2010/07/17 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
介绍一下SQL Server的全文索引
2013/08/15 面试题
办公室文秘自我鉴定
2013/09/21 职场文书
初任培训自我鉴定
2013/10/07 职场文书
数字化校园建设方案
2014/05/03 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
保安公司服务承诺书
2014/05/28 职场文书
建筑管理专业求职信
2014/07/28 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
go结构体嵌套的切片数组操作
2021/04/28 Golang
Go 语言结构实例分析
2021/07/04 Golang
MySQL之select、distinct、limit的使用
2021/11/11 MySQL