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 相关文章推荐
加强版phplib的DB类
Mar 31 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
PHP仿盗链代码
Jun 03 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
PHP crc32()函数讲解
Feb 14 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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
分享一个超好用的php header下载函数
2014/01/31 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
北承题目(C++)
2012/05/16 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
开业庆典邀请函
2014/01/08 职场文书
建筑项目策划书
2014/01/13 职场文书
年终晚会活动方案
2014/08/21 职场文书
防灾减灾活动总结
2014/08/30 职场文书
员工工作及收入证明
2014/10/28 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
追讨欠款律师函
2015/06/24 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
Python sklearn分类决策树方法详解
2022/09/23 Python