普通注册 - 普通登录
开源之家-免费素材_软件_模板_源码下载-更快的站长下载站

开源之家-免费素材_软件_模板_源码下载-更快的站长下载站

Laravel统一错误处理为JSON的方法介绍

时间:2020-10-18 17:14 [[其它教程]] 作者:开源之家 浏览:

LaravelLaravel中的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;
}
}

查看输出:

Laravel统一错误处理为JSON的方法介绍

测试ok,我们可以愉快的使用啦。当然,其他形式的错误输出可以自行扩展。

转载请注明来源: Laravel统一错误处理为JSON的方法介绍

本文永久链接地址: https://www.enboo.cn/CMSjiaocheng/qitajiaocheng/21952.html

文本标签:Laravel

郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如无法链接失效或侵犯版权,请给我们来信:2225329841@qq.com