美文网首页
PHP异常处理

PHP异常处理

作者: 江河湖海琴瑟琵琶 | 来源:发表于2021-03-19 12:29 被阅读0次

简单的异常捕获

<?php #应用类
namespace Home\Controller;
class TestController{
    function a(){
        try{
            throw new \Exception('异常');
        }catch (\Exception $exception){
            echo $exception->getMessage(); #异常
        }
    }
}

如果类中有20个方法,每个都try_catch?
可以写个基类,在基类的构造函数里注册一个异常处理函数,其他的类继承这个基类

<?php #基类
namespace Home\Controller;
class MyController{
    public function __construct () {
        //set_exception_handler() 接收一个callable
        set_exception_handler(
            function (\Throwable $exception){
                echo $exception->getMessage();
            }
        );
    }
}

继承基类,所有的异常都会抛出给基类,基类可以做统一处理.

<?php #应用类
namespace Home\Controller;
class TestController extends MyController {
    function a(){
        throw new \Exception('异常aaa');#异常aaa
    }
    function b(){
        throw new \Exception('异常bbb');#异常bbb
    }
    function c(){
        throw new \mysqli_sql_exception('数据库异常'); #数据库异常
    }
    function d(){
        set_time_limit(1);
        while(true){}
    }
    function e(){
        ini_set('memory_limit','10M');
        while (true){
            $data[] = 1;
        }
    }
  
}

注意最后两个方法
function d()报错超时
function e()报错内存溢出
并不能被基类捕获
可以注册一个register_shutdown_function(),该方法在脚本结束时执行.

#index.php 入口文件
register_shutdown_function(
    function (){
        $error = error_get_last();
        if ($error){
            dump($error);
        }
    }
);

要注意的是,这个函数可以出现多次,并按注册先后顺序执行,前边的执行了exit(); 后续的将不会执行.有的框架如tp3.2.3已经注册了此方法,并且他内部执行了exit(); 想让自己的方法执行,应该早于框架注册, 可以放在index.php文件中,这样便能处理超时和内存溢出错误

相关文章

  • php学习笔记(六)

    PHP异常处理 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过thro...

  • PHP学习笔记 - 进阶篇(10)

    异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过...

  • php 异常处理

    从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出...

  • PHP异常

    抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw...

  • 1.10 PHP异常处理

    1.抛出一个异常 从PHP5开始,PHP支持 异常处理 ,异常处理是面向对象的一个重要特性,PHP代码中的异常通过...

  • 10.2.1 PHP异常处理1

    10.2.1 PHP异常处理1 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • 10.2.2 PHP异常处理2

    10.2.2 PHP异常处理2 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • PHP 异常处理

    异常(Exception)用于在指定的错误发生时改变脚本的正常流程。 什么是异常? PHP 5 提供了一种新的面向...

  • php异常处理

    这篇文章主要对php中的错误处理进行简单的记录 php一开始被设计为一门面向过程的语言,所以异常处理没有使用像Ja...

  • PHP异常处理

    简单的异常捕获 如果类中有20个方法,每个都try_catch?可以写个基类,在基类的构造函数里注册一个异常处理函...

网友评论

      本文标题:PHP异常处理

      本文链接:https://www.haomeiwen.com/subject/wxrvcltx.html