Laravel 中如何控制返回的错误, 正确的写法是什么?

问答 qiuyuhome ⋅ 于 1周前 ⋅ 最后回复由 hellowd 1周前 ⋅ 18 阅读

逻辑层可能会返回错误.

所以 controller 层代码如下, 需要判断逻辑层返回的状态码, 如何能够优雅的处理?

        $storeInfo = $this->htmlHandleService->getStoreInfo($webName, $htmlInfo['data']);
        if ($storeInfo['code'] !== 200) {
            Log::error($storeInfo['data']);
            die;
        }

        // 获取 coupons 信息.
        $couponsInfo = $this->htmlHandleService->getCouponsInfo($webName, $htmlInfo['data']);
        if ($couponsInfo['code'] !== 200) {
            Log::error($couponsInfo['data']);
            die;
        }

        // 数据处理, 保存商城信息.
        $saveStoreRes = $this->couponsStorageService->saveStore($storeInfo['data']);
        if ($saveStoreRes['code'] !== 200) {
            Log::error($saveStoreRes['data']);
            die;
        }

        // 数据处理, 保存 coupons 信息.
        $saveStoreRes = $this->couponsStorageService->saveCoupons($saveStoreRes['data'], $couponsInfo['data']);
        if ($saveStoreRes['code'] !== 200) {
            Log::error($saveStoreRes['data']);
            die;
        }

        // 推送到队列, 通知抓取完毕, 可以后处理.
        $pushRes = Redis::lpush(config('coupons.laterHandleQueueName'), strtolower($saveStoreRes['data']['id']));
        if (! $pushRes) {
            Log::error('push 到队列: ' . config('coupons.laterHandleQueueName') . ' 失败');
            die;
        }

想我这样, 如何能够优雅的处理返回的错误.

我这个是 cli 下的 command 脚本.

本文章首发在 Laravel China 社区

当才华还支持不起理想时,就应该静下心来好好学习了。

成为第一个点赞的人吧 :bowtie:
最佳答案
  • hellowd 1
    1周前

    service层出错时应该以抛出异常的形式而不是return ['code' => -1]这种- -, ps:抛异常也是可以带上错误码的。这样调用方这边加个try catch即可了,而不用每个地方都要判断下code。

回复数量: 1
  • hellowd 1
    1周前

    service层出错时应该以抛出异常的形式而不是return ['code' => -1]这种- -, ps:抛异常也是可以带上错误码的。这样调用方这边加个try catch即可了,而不用每个地方都要判断下code。

暂无评论~~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 100 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档