Почему попробуйте / поймайте исключения, работающие для Gson.fromJson ()? - PullRequest
0 голосов
/ 18 декабря 2018

Я получаю com.google.gson.JsonSyntaxException от вызова Gson.fromJson (), поэтому добавил логику 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 STRINGпуть к столбцу 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)

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Разобрался.Получается, что вызов @ Slf4j log.error () показывает исключение как ошибку в Google StackDriver, а значит, говорит, что я получаю миллионы ошибок.

0 голосов
/ 18 декабря 2018

когда (...). ThenReturn (null) указывает на то, что вы используете какую-то насмешливую библиотеку (jMock, Mockery или simular).И вы определяете, что если fromJson ("test", Fulfillment.class) вызывается, то mock должен возвращать null.Актуальный метод fromJson не вызывается, поскольку вы уже определили результат.Если вы хотите, чтобы исключение было выдано, удалите строку

when(gson.fromJson("test", Fulfillment.class)).thenReturn(null);
...