我只是要获取简单的一个对象信息,为什么报异常,直接给我返回null不可以吗?

AVQuery avQuery = new AVQuery<>("_User");
AVObject avObject = null;
try {
avObject = avQuery.get(objectId);
} catch (AVException e) {
logger.error(e.getMessage());
}

com.avos.avoscloud.AVException: Could not find user.
at com.avos.avoscloud.AVErrorUtils.createException(AVErrorUtils.java:20)
at com.avos.avoscloud.GetHttpResponseHandler.onSuccess(GetHttpResponseHandler.java:81)
at com.avos.avoscloud.AsyncHttpResponseHandler.onResponse(AsyncHttpResponseHandler.java:40)
at com.avos.avoscloud.PaasClient$AVHttpClient.execute(PaasClient.java:817)
at com.avos.avoscloud.PaasClient.getObject(PaasClient.java:315)
at com.avos.avoscloud.PaasClient.getObject(PaasClient.java:288)
at com.avos.avoscloud.PaasClient.getObject(PaasClient.java:320)
at com.avos.avoscloud.AVQuery.getInBackground(AVQuery.java:1462)
at com.avos.avoscloud.AVQuery.get(AVQuery.java:1331)

AVQuery<>("_User")

查询用户是一个比较特殊的操作。后端为用户不存在专门准备了一个错误:

{
  "code": 211,
  "error": "Could not find user."
}

相应地,SDK 这里也是抛出异常。

如果是查询普通的 AVObject,不存在的话并不会报错。
不过也不会返回 null,这种情况下可以通过检验该 AVObject 的 getObjectId 方法是否返回空字符串 (avObject.getObjectId() == "") 来判断存在性。