我一直在通过调用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,因此,我们需要捕获这一异常。
它为我工作!

07-28 02:04