zoukankan      html  css  js  c++  java
  • Laravel实践-自定义全局异常处理

    在做API时,需要对一些异常进行全局处理

    百牛信息技术bainiu.ltd整理发布于博客园
    比如添加用户执行失败时,需要返回错误信息

    // 添加用户
    $result = User::add($user);
    if(empty($result)){
        throw new ApiException('添加失败');
    }
    
    API 回复
    {
        "msg" : "添加失败",
        "data" : "",
        "status" : 0 // 0为执行错误
    }

    那么我们就需要添加一个全局异常处理,专门用来返回错误信息

    步骤

    • 添加异常处理类
    • 修改laravel异常处理
    1.添加异常处理类
    ./app/Exceptions/ApiException.php
    <?php
    namespace AppExceptions;
    
    class ApiException extends Exception
    {
        function __construct($msg='')
        {
            parent::__construct($msg);
        }
    }
    2.修改laravel异常处理
    ./app/Exceptions/Handler.php
    
    // Handler的render函数
    public function render($request, Exception $e)
    {
        // 如果config配置debug为true ==>debug模式的话让laravel自行处理
        if(config('app.debug')){
            return parent::render($request, $e);
        }
        return $this->handle($request, $e);
    }
    
    // 新添加的handle函数
    public function handle($request, Exception $e){
        // 只处理自定义的APIException异常
        if($e instanceof ApiException) {
            $result = [
                "msg"    => "",
                "data"   => $e->getMessage(),
                "status" => 0
            ];
            return response()->json($result);
        }
        return parent::render($request, $e);
    }

    大功告成....

  • 相关阅读:
    pip 8 安装
    zabbix server配置文件
    双代号网络图、双代号时标网络图
    logrotate
    tsql 执行存储过程
    dos 加用户
    Visual Studio (VS IDE) 你必须知道的功能和技巧
    格式化数字字符串 与C#变量
    .NET中的字符串你了解多少?
    新手如何有效地学习.NET
  • 原文地址:https://www.cnblogs.com/bainiu/p/7560477.html
Copyright © 2011-2022 走看看