php之set_exception_handler 和 set_error_handler 函数

日期 2013年07月26日 07:41

分类 PHP

标签

浏览 6434

字数统计: 1819(字)

本文发布于 11 年前, 内容可能已经过时或失效!

文章目录

php开发测试及线上的时候可以根据不同情况设定错误和异常处理,需要用到以下三函数

php设定错误和异常处理三函数:

register_shutdown_function(array(‘Debug’,’fatalError’)); //定义PHP程序执行完成后执行的函数
set_error_handler(array(‘Debug’,’appError’)); // 设置一个用户定义的错误处理函数
set_exception_handler(array(‘Debug’,’appException’)); //自定义异常处理。

其中前面已经说过了这个函数: register_shutdown_function 函数详解

set_exception_handler定义和用法

set_exception_handler() 函数设置用户自定义的异常处理函数。

该函数用于创建运行时期间的用户自己的异常处理方法。

该函数会返回旧的异常处理程序,若失败,则返回 null。

语法 set_exception_handler(exception_function)

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

例子:

function exceptionHandler($exception) {

    $errmsg = "[".date("Y-m-d H:i:s")."] ".$exception->getMessage()."n";
    $errmsg .= "REQUEST: ".print_r($_REQUEST, true)."n";
    $errmsg .= "Server: ".print_r($_SERVER['REQUEST_URI'], true)."n";

    error_log($errmsg, 3, ERROR_LOG);

}
set_exception_handler('exceptionHandler');

set_error_handler定义和用法

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

语法 set_error_handler(error_function,error_types)

参数描述error_function必需。规定发生错误时运行的函数。error_types可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 “E_ALL”。

提示和注释

提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必须终止 (die() ) 脚本。注释:如果在脚本执行前发生错误,由于在那时自定义程序还没有注册,因此就不会用到这个自定义错误处理程序。

例子:

function errorHandler($errno, $errstr, $errfile, $errline) {

    $errmsg = "[".date("Y-m-d H:i:s")."] [{$errno}] {$errstr}n";
    $errmsg .= "Error on line {$errline} in {$errfile}nn";
    $errmsg .= "REQUEST: ".print_r($_REQUEST, true)."n";
    $errmsg .= "Server: ".print_r($_SERVER['REQUEST_URI'], true)."n";

    error_log($errmsg, 3, ERROR_LOG);

    die();
}
set_error_handler("errorHandler");