比如注册用户的时候,随便产生一个错误,假设用户名重复了,$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"]
就已经被“合体”了。
请问这个是 feature 还是 bug,目前已知错误码有 160 多个,难道要开发人员自己一个个做对应?