我从服务器获得响应,然后使用Gson将其反序列化为相应的Object。
问题是有时候我得到一个错误响应(当然不是我期望的Object类型)并导致NullPointerException。 我怎么处理这种情况?
我的代码是:
Response pollsResponse = okHttpClient.newCall(pollsRequest).execute();
String pollsResponseString = pollsResponse.body().string();
// Gson Type for List of Poll.class oObjects
Type listType = new TypeToken<ArrayList<Poll>>() { }.getType();
pollsList = gson.fromJson(pollsResponseString, listType);
如果出现错误,最后一行代码会给出NPE。我如何检查项目是否不是ArrayList<Poll>
的类型,所以我不会反序列化它?
编辑:我无法理解为什么我的问题类似于链接的问题?我知道什么是NPE。我不知道如何处理我不希望通过网络呼叫导致NPE的结果。如果我错了,请纠正我。
答案 0 :(得分:1)
在尝试解析正文之前,您需要检查Response是否有效。像这样:
X_batch, Y_batch = tf.train.batch([image, label], batch_size=64)
# Alternatively, `X_shape = [None, 32, 32, 3]`
X_shape = tf.TensorShape([None]).concatenate(X_batch.get_shape()[1:])
# Alternatively, `Y_shape = [None, 10]`
Y_shape = tf.TensorShape([None]).concatenate(Y_batch.get_shape()[1:])
# Create tensors that can be fed with a less specific shape
# than `X_batch`, `Y_batch`.
X = tf.placeholder_with_default(X_batch, shape=X_shape)
Y = tf.placeholder_with_default(Y_batch, shape=Y_shape)
BTW:你的问题是问题是“反序列化时的NPE ......”与问题没有关系,一个更好的主题可能是“我怎样才能找到OKHttp响应错误?”