V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
GDC
V2EX  ›  全球工单系统

LeanCloud 的 PHP SDK 中关于异常的处理是否不太合理?以及用户退出却不生效?

  •  1
     
  •   GDC · 2020-02-25 16:08:19 +08:00 · 1712 次点击
    这是一个创建于 1731 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天准备接入 LeanCloud,使用官方的 PHP SDK 时发现了一个不太合理的地方。

    比如注册用户的时候,随便产生一个错误,假设用户名重复了,$user->signUp() 会抛出异常, 但 $th->getMessage() 得到的错误信息却不是纯粹的文字提示, 而是包含了 Request 的信息,例如这样:

    218 Invalid password, it must be a non-blank string.:{\"body\":{\"username\":\"spark\",\"password\":\"\"},\"method\":\"POST\",\"path\":\"\\/1.1\\/classes\\/_User\"}","code":218}
    

    这样带来一个困扰就是,无法直接把错误信息反馈给前端、给用户看,只能通过 $th->getCode() 得到错误码之后自己去官方文档找对应的文字说明,再对应起来反馈回去。

    翻了 SDK 的代码后,最终在 BatchRequestError.php 文件中找到了原因:

    public function add($request, $response) {
        $error["code"] = isset($response["code"]) ? $response["code"] : 1;
        $error["error"] = "{$error['code']} {$response['error']}:"
                        . json_encode($request);
        $this->errors[] = $error;
        return $this;
    }
    

    可以看到在这里 $error["error"] 就已经被“合体”了。

    不知道有没有使用 LeanCloud 的同学,或者 LeanCloud 的人来说说,这个是 feature 还是 bug,目前已知错误码有 160 多个,难道要开发人员自己一个个做对应?


    另外还发现一个疑似 bug 的,User::logOut() 之后,下次请求使用相同的凭据 User::getCurrentUser() 还是能获取到当前用户,蛋疼。

    2 条回复    2020-02-25 16:43:59 +08:00
    FaceBug
        1
    FaceBug  
       2020-02-25 16:33:05 +08:00
    不能算 bug 吧,抛出错误的时候,把原始的请求也抛出是很常见的,不过一般我都是分两个字段的,msg 是 msg,request 是 request。

    就这个问题,你其实可以用那个冒号作为分隔符,前面的是你要展示给用户的信息。

    另外,就算单独给你 msg ( error )信息,我们通常也不会直接把这种英文的错误展示给终端用户吧(除非是内部用的系统,给程序员、运维看的),通常还是会通过 code 映射一个“人性化”的错误提示
    GDC
        2
    GDC  
    OP
       2020-02-25 16:43:59 +08:00
    @cepczkd 我认为分两个字段是比较合理的,另外在开发的网站本身就是英文的…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2654 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:22 · PVG 08:22 · LAX 16:22 · JFK 19:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.