У меня есть 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 () не принимает параметр.