最佳实践系列(十一):深入探讨 PHP 错误异常处理机制及 Laravel 框架底层的相应实现

错误和异常是很强大的工具,能帮助我们预期意料之外的事,使用优雅的方式捕获问题。不过,错误和异常很相似,容易让人混淆,二者都表示出问题了,都会提供错误信息,而且都有错误类型。然而,错误出现的时间比异常早,错误会导致程序脚本停止执行,如果可能,错误会委托给全局错误处理程序处理,有些错误是无法恢复的。对于高版本 PHP 我们基本上只需要处理异常,不用管错误,但我们仍然必须做好防御准备,因为 P…

[ Laravel 5.4 文档 ] 综合话题 —— 错误&日志

1、简介 Laravel 默认已经为我们配置好了错误和异常处理,我们在 App\Exceptions\Handler 类中触发异常并将响应返回给用户。本教程我们将深入探讨这个类。 此外,Laravel 还集成了 Monolog日志库以便提供各种功能强大的日志处理器,默认情况下,Laravel 已经为我们配置了一些处理器,我们可以选择单个日志文件,也可以选择记录错误信息到系统日志。 2、配…

[ Lumen 5.3 文档 ] 更多特性 —— 错误 & 日志

1、简介 开始一个新的Lumen项目的时候,错误和异常处理已经默认为你配置好了。此外,Lumen还集成了提供各种功能强大日志处理器的Monolog日志库。 2、配置 错误详情 配置文件.env中的APP_DEBUG配置选项控制浏览器显示的错误详情数量。 对本地开发而言,你应该设置环境变量APP_DEBUG值为true。在生产环境,该值应该被设置为false。 自定义Monolog配置 如…

[ Laravel 5.3 文档 ] 起步 —— 错误&日志

1、简介 Laravel默认已经为我们配置好了错误和异常处理,我们在App\Exceptions\Handler类中触发异常并将响应返回给用户。本教程我们将深入探讨这个类。 此外,Laravel还集成了Monolog日志库以便提供各种功能强大的日志处理器,默认情况下,Laravel已经为我们配置了一些处理器,我们可以选择单个日志文件,也可以选择记录错误信息到系统日志。 2、配置 错误详情…

[ Lumen 5.2 文档 ] 更多特性 —— 错误 & 日志

1、简介 开始一个新的Lumen项目的时候,错误和异常处理已经默认为你配置好了。此外,Lumen还集成了提供各种功能强大日志处理器的Monolog日志库。 2、配置 错误详情 配置文件.env中的APP_DEBUG配置选项控制浏览器显示的错误详情数量。 对本地开发而言,你应该设置环境变量APP_DEBUG值为true。在生产环境,该值应该被设置为false。 自定义Monolog配置 如…

[ Laravel 5.2 文档 ] 服务 —— 错误&日志

1、简介 Laravel默认已经为我们配置好了错误和异常处理,此外,Laravel还集成了Monolog日志库以便提供多种功能强大的日志处理器。 2、配置 错误详情显示 配置文件config/app.php中的debug配置选项控制浏览器显示的错误详情数量。默认情况下,该配置选项被设置在.env文件中的环境变量APP_DEBUG。 对本地开发而言,你应该设置环境变量APP_DEBUG值为…

基于 Laravel 集成的 Monolog 库对日志进行配置和记录

上一节我们讲了Laravel中的错误和异常处理,在当中我们提到捕获到异常后除了在页面上显示之外,还会将异常记录到日志中,尤其是在线上,这一点很重要,为方便我们排查问题提供了有力的依据,因为线上出现问题是不可能在浏览器中显示错误信息的(这样会暴露服务器上的文件位置和代码信息)。当然,日志的作用远远不限于此,还可以用来记录线上用户行为,站点访问信息,用户操作记录等等。 正因如此,对于大型系统…

[ Lumen 5.1 文档 ] 更多特性 —— 错误&日志

1、简介 开始一个新的Lumen项目的时候,错误和异常处理已经默认为你配置好了。此外,Lumen还集成了提供各种功能强大日志处理器的Monolog日志库。 2、配置 2.1 错误详情 配置文件.env中的APP_DEBUG配置选项控制浏览器显示的错误详情数量。 对本地开发而言,你应该设置环境变量APP_DEBUG值为true。在生产环境,该值应该被设置为false。 3、异常处理器 所有…

[ Laravel 5.1 文档 ] 服务 —— 错误&日志

1、简介 开始一个Laravel项目的时候,错误和异常处理已经默认为你配置好了。此外,Laravel还集成了提供各种功能强大日志处理器的Monolog日志库。 2、配置 2.1 错误详情显示 配置文件config/app.php中的debug配置选项控制浏览器显示的错误详情数量。默认情况下,该配置选项被设置在.env文件中的环境变量APP_DEBUG。 对本地开发而言,你应该设置环境变量…