设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间10 现在时间10 缓存数据 只要你的心是晴的,人生就没有雨天。就像好事情总是发生在那些微笑着的人身上。调整心情,保持微笑。早安!

只要你的心是晴的,人生就没有雨天。就像好事情总是发生在那些微笑着的人身上。调整心情,保持微笑。早安!

查看: 381|回复: 0

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

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:236
  • 打卡月天数:0
  • 打卡总奖励:3513
  • 最近打卡:2025-06-30 00:34:35
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
421
主题
384
精华
0
金钱
4768
积分
880
注册时间
2023-1-3
最后登录
2025-6-30

发表于 2023-2-12 20:42:57 | 显示全部楼层 |阅读模式
Laravel中的AppExceptionsHandler 类负责记录应用程序触发的所有异常,这在我们开发过程中十分方便,总是try...catch使代码太过繁琐且可读性大大降低,那么怎么使用它处理异常为json呢?
方法如下:
我们可以新建一个class,用来处理异常返回。
  1. <?php
  2. /**
  3. * Author: sai
  4. * Date: 2020/1/15
  5. * Time: 14:31
  6. */

  7. namespace App\Exceptions;


  8. class ApiException extends \Exception
  9. {
  10. const ERROR_CODE = 1001;
  11. const ERROR_MSG = 'ApiException';

  12. private $data = [];

  13. /**
  14.   * BusinessException constructor.
  15.   *
  16.   * @param string $message
  17.   * @param string $code
  18.   * @param array $data
  19.   */
  20. public function __construct(string $message, string $code, $data = [])
  21. {
  22.   $this->code = $code ? : self::ERROR_CODE;
  23.   $this->message = $message ? : self::ERROR_MSG;
  24.   $this->data = $data;
  25. }

  26. /**
  27.   * @return array
  28.   */
  29. public function getData()
  30. {
  31.   return $this->data;
  32. }

  33. /**
  34.   * 异常输出
  35.   */
  36. public function render($request)
  37. {
  38.   return response()->json([
  39.    'data' => $this->getData(),
  40.    'code' => $this->getCode(),
  41.    'messgae' => $this->getMessage(),
  42.   ], 200);
  43. }
  44. }
复制代码
然后我们在Handler加入,加入$dontReport,便不会使用自带的错误处理,而使用自定义的处理。
  1. <?php

  2. namespace App\Exceptions;

  3. use Exception;
  4. use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

  5. class Handler extends ExceptionHandler
  6. {
  7. /**
  8.   * 一些不需管或不需要抛出的异常
  9.   */
  10. protected $dontReport = [
  11.   ApiException::class,
  12. ];

  13. ...
  14. }
复制代码
我们测试一下:
  1. <?php

  2. namespace App\Http\Controllers;

  3. use App\Exceptions\ApiException;
  4. use Illuminate\Http\Request;

  5. class HomeController extends Controller
  6. {
  7. public function index(Request $request)
  8. {
  9.   throw new ApiException('error', 10001, ['oh' => 'no']);
  10.   return 1;
  11. }
  12. }
复制代码
查看输出:
214358sht1swtza9ahwhsh.jpg

测试ok,我们可以愉快的使用啦。当然,其他形式的错误输出可以自行扩展。
总结
到此这篇关于Laravel统一错误处理为JSON的文章就介绍到这了,更多相关Laravel统一错误处理为JSON内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表