set_exception_handler函数在ThinkPHP中的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了set_exception_handler函数在ThinkPHP中的用法相关的知识,希望对你有一定的参考价值。

参考技术A 本文实例讲述了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框架程序设计有所帮助。

php7.0新特性

  1.运算符:

  $a = $_GET[‘a‘] ?? 1 等价于 $a = isset($_GET[‘a‘]) ? $_GET[‘a‘] : 1;

  2,。函数返回值声明

  function 函数名() :返回值类型

  3.php使用try catch去捕获错误 记住不是抛出异常 这个特性就是像java靠拢的

  set_exception_handler(‘xiaoming‘);

  non_exists_func();

  function xiaoming($param)

  {

  echo "\n I catch an error\n";

  var_dump($param);

  }

  4.define支持定义数组类型的值

  define(‘ANIMALS‘, [

  ‘dog‘,

  ‘cat‘,

  ‘bird‘

  ]);

  echo ANIMALS[1]; // outputs "cat"

  5.数组定义

  $arr=[‘‘,‘‘,‘‘];

(来源:程序员)

 

以上是关于set_exception_handler函数在ThinkPHP中的用法的主要内容,如果未能解决你的问题,请参考以下文章

为啥 set_exception_handler(func) 不捕获异常?

set_error_handler与set_exception_handler

register_shutdown_function函数详解

php7.0新特性

连接与连接管理

设置了set_error_handler,但是执行一个未定义的函数时,还是显示php自带错误提示?