异常处理机制

未匹配的标注

简介

这一章我们来介绍一下 异常处理的引导类 Illuminate\Foundation\Bootstrap\HandleExceptions

如图:

file

这个类的功能:是替换 PHP 系统默认报错信息提示的处理函数,我们在 Laravel 出现报错时,看到的界面就是通过这里进行更换的。

正文

先贴代码 Illuminate\Foundation\Bootstrap\HandleExceptions 类的 bootstrap 方法

public function bootstrap(Application $app)
{
    $this->app = $app;

    error_reporting(-1);

    set_error_handler([$this, 'handleError']);

    set_exception_handler([$this, 'handleException']);

    register_shutdown_function([$this, 'handleShutdown']);

    if (! $app->environment('testing')) {
        ini_set('display_errors', 'Off');
    }
}
  • 第一个 $this->app = $app; 给当前对象的 app 属性赋值,记录容器对象
  • 第二个 error_reporting(-1);:设置报告所有 PHP 错误 ;具体 error_reporting 方法。。。看这里
  • 第三个 set_error_handler([$this, 'handleError']);:将当前对象的 handleError 方法设置为错误处理函数,替换掉系统默认的处理函数;具体 set_error_handler 方法。。。看这里
  • 第四个 set_exception_handler([$this, 'handleException']);:将当前对象的 handleException 方法设置为异常处理函数,替换掉系统默认的处理函数;具体 set_exception_handler 方法。。。看这里
  • 第五个 register_shutdown_function([$this, 'handleShutdown']);:将当前对象的 handleShutdown 方法设置为 PHP 中止时执行的函数;具体 register_shutdown_function 方法。。。看这里
  • 第六个
if (! $app->environment('testing')) {
    ini_set('display_errors', 'Off');
}

检测当前是否是 testing 运行环境,是则默认为 PHP 的错误显示。如果不是 testing 环境则关闭错误显示。

本篇如有错误、不当或者需补充的内容,请各位同僚多提宝贵意见。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~