-
[PHP] laravel的异常处理
laravel默认的异常处理是展示出异常的界面,不能够完善的捕获异常并响应为json格式数据
需要修改下以下文件
app/Exceptions/Handler.php
<?php namespace App\Exceptions; use App\Lib\ApiHelper\ApiCode; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Support\Arr; use Illuminate\Validation\ValidationException; use Symfony\Component\HttpKernel\Exception\HttpException; use Throwable; class Handler extends ExceptionHandler { /** * A list of the exception types that are not reported. * * @var array */ protected $dontReport = [ // ]; /** * A list of the inputs that are never flashed for validation exceptions. * * @var array */ protected $dontFlash = [ 'current_password', 'password', 'password_confirmation', ]; /** * Register the exception handling callbacks for the application. * * @return void */ public function register() { $this->reportable(function (Throwable $e) { // }); } public function render($request, Throwable $e) { switch ($e) { case $e instanceof ValidationException: $response = [ 'errmsg' => Arr::first($e->errors())[0] ?? '请求参数不合法', 'errcode' => ApiCode::FAILED, 'data' => new \stdClass() ]; break; case $e instanceof HttpException: $response = [ 'errmsg' => ApiCode::getMessage(ApiCode::FAILED_HTTP), 'errcode' => ApiCode::FAILED_HTTP, 'data' => new \stdClass() ]; break; default: $code = $e->getCode() ?: ApiCode::FAILED; $response = [ 'errmsg' => $e->getMessage() ?: ApiCode::getMessage($code), 'errcode' => $code, 'data' => new \stdClass() ]; } if (config('app.debug')) { $response['exception'] = get_class($e); $response['message'] = $e->getMessage(); $response['trace'] = $e->getTrace(); } return response()->json($response,200,[],JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE); } }
ApiCode类
app/Lib/ApiHelper/ApiCode.php
<?php namespace App\Lib\ApiHelper; class ApiCode { const OK = 20000; const FAILED_PARAMES = 40001; const FAILED = 50000; const FAILED_NO_EXIST = 50001; const FAILED_AUTH_EXPIRED = 50002; const FAILED_HTTP = 50003; public static $messageMapper = [ self::OK => '成功', self::FAILED => '失败', self::FAILED_HTTP => 'HTTP请求异常', self::FAILED_NO_EXIST => '授权码不存在', self::FAILED_AUTH_EXPIRED => '授权码过期' ]; /** * Get code message * @param $code * @return string */ public static function getMessage($code) { return self::$messageMapper[$code] ?? '服务器未知错误'; } }
出处:https://www.cnblogs.com/taoshihan/p/15226019.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式