资讯专栏INFORMATION COLUMN

PHP捕捉错误

XboxYan / 1749人阅读

摘要:捕捉错误禁止错误输出设置错误处理器在脚本结束时运行的函数错误处理错误代码错误信息错误文件错误行号捕捉致命错误这里发生一个警告错误,出发这里发生一个警告错误被捕获发生致命错误,脚本停止运行触发打开后输出

PHP捕捉错误

禁止错误输出

error_reporting(0);

设置错误处理器

set_error_handler("errorHandler");

在脚本结束时运行的函数

register_shutdown_function("fatalErrorHandler");

错误处理

/**
 * @param int    $err_no      错误代码
 * @param string $err_msg  错误信息
 * @param string $err_file    错误文件
 * @param int    $err_line     错误行号
 * @return string
 */
function errorHandler($err_no = 0, $err_msg = "", $err_file = "", $err_line = 0)
{
    $log = [
        "[".date("Y-m-d h-i-s")."]",
        "|",
        $err_no,
        "|",
        $err_msg,
        "|",
        $err_file,
        "|",
        $err_line
    ];
    $log_path = "./test.txt";
    error_log(implode(" ",$log)."
",3, $log_path);
}

捕捉致命错误

function fatalErrorHandler() {
    $e = error_get_last();

    var_export($e);
    switch ($e["type"]) {
        case 1:
            errorHandler($e["type"], $e["message"], $e["file"], $e["line"]);
            break;
    }
}
class DemoClass_1
{
    public function index()
    {
        //这里发生一个警告错误,出发errorHandler
        echo $undefinedVarible;
    }
}

这里发生一个警告错误,被errorHandler 捕获

$demo_1 = new DemoClass_1();
$demo_1->index();

发生致命错误,脚本停止运行触发 fatalErrorHandler

$demo_2 = new DemoClass_2();
$demo_2->index();

打开test.txt后 输出:

[2018-06-12 05-49-11] | 8 | Undefined variable: undefinedVarible | /Users/darry/htdocs/test.php | 57
[2018-06-12 05-49-11] | 1 | Uncaught Error: Class "DemoClass_2" not found in /Users/darry/htdocs/test.php:67
Stack trace:
#0 {main}
  thrown | /Users/darry/htdocs/test.php | 67

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39968.html

相关文章

  • 如何处理 PHP错误与异常(笔记)

    摘要:又或者反过来,把错误当成异常来处理。当然,我猜它的目的,应该也是为了能实现错误与异常之间优雅转换而添加的。至此,错误与异常的学习基本完毕。 这话题已经没有什么新意了,这里只是做做笔记,作为思路的一种整理,也以便后续忘了可以回来这里查找。 错误 以下是 PHP 最常见的几种错误: // E_NOTICE echo $a; // E_WARNING echo 100 / 0; clas...

    kyanag 评论0 收藏0
  • PHP捕捉错误

    摘要:捕捉错误禁止错误输出设置错误处理器在脚本结束时运行的函数错误处理错误代码错误信息错误文件错误行号捕捉致命错误这里发生一个警告错误,出发这里发生一个警告错误被捕获发生致命错误,脚本停止运行触发打开后输出 PHP捕捉错误 禁止错误输出 error_reporting(0); 设置错误处理器 set_error_handler(errorHandler); 在脚本结束时运行的函数 regis...

    lbool 评论0 收藏0
  • PHP 错误抛出及自定义处理

    摘要:错误抛出及自定义处理定义中的错误抛出及自定义处理指的是允许我们自定义抛出错误并且捕捉错误并进行处理。例如我们编写一个的函数,而参数必须是一个整数否则触发错误运行结果如下捕捉错误异常摘自官方文档 PHP 错误抛出及自定义处理 定义 php中的错误抛出及自定义处理指的是允许我们自定义抛出错误并且捕捉错误并进行处理。类似于 面向对象语言中的throw 及 try...catch... 在ph...

    2450184176 评论0 收藏0

发表评论

0条评论

XboxYan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<