Laravel怎样使错误异常处理为JSON?
Admin 2021-04-27 群英技术资讯 2511 次浏览
在开发过程中,我们常需要做异常处理,如果使用try...catch比较麻烦,那么有没有其他方法呢?这篇文章就给大家介绍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的方法,其他形式的错误输出大家可以自行扩展,希望本文对大家学习有帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Laravel Elixir是一个API,该API集成了Gulp,为编译Laravel项目中的Less、Sass、CoffeeScript以及处理许多其他日常任务提供了一个简单的解决方案,从而减少编写上述繁琐任务的时间,有效提高编程效率。
这篇文章主要介绍了PHP中token的生成案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
今天小编就为大家分享一篇在TP5数据库中四个字段实现无限分类的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在PHP中,预定的的$_GET变量用于收集来自method="get"的表单中的值。$_GET变量是一个数组,内容是由HTTP GET方法发送的变量名称和值。下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
swoole和yaf的区别:yaf跟swoole这两个框架还是比较典型的,yaf更适合用作后台开发,swoole更适合用作聊天室开发(虽然用php做socket性能不太好)。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008