我一直在通过调用Gson.fromJson()获得com.google.gson.JsonSyntaxException,因此添加了catch(Exception)逻辑,但是错误永远不会被捕获并且只会被抛出!
这是我所拥有的:
Request request = new Request.Builder()
.url(getOrderUrlWithId)
.get()
.build();
try {
Response response = this.okHttpClient.newCall(request).execute();
GetOrderResult orderResult = gson.fromJson(gson.toJson(response.body().string()), GetOrderResult.class);
response.close();
} catch (IOException e) {
log.error("Error retrieving order : " + e.getMessage(), e);
throw new RuntimeException(e);
} catch (Exception e) {
log.error("Error happening for client PO: " + clientPO, e);
return null;
}
运行测试时,我得到“com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列的路径$
”
为什么没有发现错误?
这是堆栈跟踪:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:892)
at com.google.gson.Gson.fromJson(Gson.java:841)
at com.google.gson.Gson.fromJson(Gson.java:813)
at com.hub.fulfill.circlegraphics.getOrdersByCgOrderId(CircleGraphicsApi.java:164)
最佳答案
您需要像这样捕获JsonSyntaxException
对于Kotlin
对于Java
早些时候,我还捕获了java.lang.IllegalStateException,但没有成功。
似乎这里的根本异常是JsonSyntaxException,因此,我们需要捕获这一异常。
它为我工作!