laravel 异常捕获_Laravel 源码核心解读:全局异常处理

Laravel 为用户提供了一个基础的全局异常拦截处理器App\Exceptions\Hander。如果没有全局的异常错误拦截器,那我们在每个可能发生错误异常的业务逻辑分支中,都要使用 try ... catch,然后将执行结果返回 Controller层,再由其根据结果来构造相应的 Response,那代码冗余的会相当可以。

全局异常错误处理,是每个框架都应该具备的,这次我们就通过简析 Laravel 的源码和执行流程,来看一下此模式是如何被运用的。

源码解析

laravel/laravel 脚手架中有一个预定义好的异常处理器:

app/Exceptions/Handler.php

namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler

{

// 不被处理的异常错误

protected $dontReport = [];

// 认证异常时不被flashed的数据

protected $dontFlash = [

'password',

'password_confirmation',

];

// 上报异常至错误driver,如日志文件(storage/logs/laravel.log),第三方日志存储分析平台

public function report(Exception $exception)

{

parent::report($exception);

}

// 将异常信息响应给客户端

public function render($request, Exception $exception)

{

return parent::render($request, $exception);

}

}

当 Laravel 处理一次请求时,在启动文件中注册了以下服务:

bootstrap/app.php

// 绑定 http 服务提供者

$app->singleton(

Illuminate\Contracts\Http\Kernel::class,

App\Http\Kernel::class

);

// 绑定 cli 服务提供者

$app->singleton(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值