异常处理机制

未匹配的标注

简介

这一章我们来介绍一下 异常处理的引导类 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 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~