Выдача исключения из метода toString - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть Java-класс pojo, в котором я хочу, чтобы метод Object.toString () возвращал представление объекта в формате JSON. Пользователи toString () хотят только JSON. Это мой toString ().

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;

@Override
public String toString(){
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    String json = null;
    try {
        json = ow.writeValueAsString(this);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    return json;
}

Проблема в том, что приведенный выше код проглотит исключение и позволит продолжить выполнение. Чтобы избежать таких проблем, мы можем либо сгенерировать исключение, либо повторно сгенерировать исключение как непроверенное исключение, как упомянуто здесь Java - переопределение метода toString () объекта, но я должен выбросить исключения .

Но toString () не позволяет нам генерировать исключения. Таким образом, мы можем только выбросить непроверенное исключение. Выбранный ответ из вышеприведенной ссылки говорит, что «выбрасывать исключения из toString () - очень плохая идея». Вместо этого он предлагает вернуть строку ошибки, которая мне кажется плохой, потому что мы на самом деле просто проглатываем исключение. Другое предложение состоит в том, чтобы бросить IllegalStateExcception вместо этого. Это идеальное исключение, чтобы бросить в этой ситуации, или мы должны бросить еще одну? Спасибо.

ОБНОВЛЕНИЕ: Я исправил ошибку в своем коде. Метод toString () не принимает параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...