这篇文章主要给大家介绍了关于Laravel统一错误处理为JSON的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Laravel中的AppExceptionsHandler 类负责记录应用程序触发的所有异常,这在我们开发过程中十分方便,总是try...catch使代码太过繁琐且可读性大大降低,那么怎么使用它处理异常为json呢?
方法如下:
我们可以新建一个class,用来处理异常返回。
<?php
/**
* Author: sai
* Date: 2020/1/15
* Time: 14:31
*/
namespace App\Exceptions;
class ApiException extends \Exception
{
const ERROR_CODE = 1001;
const ERROR_MSG = 'ApiException';
private $data = [];
/**
* BusinessException constructor.
*
* @param string $message
* @param string $code
* @param array $data
*/
public function __construct(string $message, string $code, $data = [])
{
$this->code = $code ? : self::ERROR_CODE;
$this->message = $message ? : self::ERROR_MSG;
$this->data = $data;
}
/**
* @return array
*/
public function getData()
{
return $this->data;
}
/**
* 异常输出
*/
public function render($request)
{
return response()->json([
'data' => $this->getData(),
'code' => $this->getCode(),
'messgae' => $this->getMessage(),
], 200);
}
}
然后我们在Handler加入,加入$dontReport,便不会使用自带的错误处理,而使用自定义的处理。
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* 一些不需管或不需要抛出的异常
*/
protected $dontReport = [
ApiException::class,
];
...
}
我们测试一下:
<?php
namespace App\Http\Controllers;
use App\Exceptions\ApiException;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index(Request $request)
{
throw new ApiException('error', 10001, ['oh' => 'no']);
return 1;
}
}
查看输出:
测试ok,我们可以愉快的使用啦。当然,其他形式的错误输出可以自行扩展。
总结
到此这篇关于Laravel统一错误处理为JSON的文章就介绍到这了,更多相关Laravel统一错误处理为JSON内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:Laravel统一错误处理为JSON的方法介绍
猜你喜欢
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
- 用nohup命令实现PHP的多进程 2023-09-02
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- php微信公众号开发之秒杀 2022-11-23
- Laravel balde模板文件中判断数据为空方法 2023-08-30
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
- laravel通用化的CURD的实现 2023-03-17
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- PHP中PDO事务处理操作示例 2022-10-15
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09