Обрабатывать исключение сопоставления объектов и отсутствующий оператор возврата - PullRequest
1 голос
/ 08 января 2020

Я собираюсь бросить RuntimeException внутри блока catch, чтобы решить пропущенную инструкцию возврата.

Каков был бы способ справиться с этой ситуацией?

Я думаю, выбрасывать исключение некоторых добро вместо того, чтобы вернуть какое-то бессмысленное значение. .

private String tryObjMapper(Object obj) {
    try {
        return objectMapper.writeValueAsString(obj);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    //missing return statement
}

Ответы [ 2 ]

1 голос
/ 08 января 2020

Это зависит от того, что вы хотите использовать в качестве запасного значения / значения по умолчанию или обработки ошибок.

У вас есть 2 основных параметра (с 2 дополнительными параметрами):

1.A. Бросьте исключение :

private String tryObjMapper(Object obj) throws JsonProcessingException  {    
    return objectMapper.writeValueAsString(obj);
}

1.B.Rethrow RuntimeException (или пользовательское непроверенное исключение)

private String tryObjMapper(Object obj) {
    try {
        return objectMapper.writeValueAsString(obj);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
        throw new RuntimeException("Failed to map obj +" obj, e);
    }
}

2.A. Определить значение по умолчанию при ошибке

private String tryObjMapper(Object obj) {
    try {
        return objectMapper.writeValueAsString(obj);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    return null;//or other default value
}

2.B. Определите значение по умолчанию с помощью одного оператора возврата:

private String tryObjMapper(Object obj) {
    String retVal = null;//or other default value
    try {
        retVal = objectMapper.writeValueAsString(obj);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    return retVal ;
}

Рассмотрите исключение при ведении журнала с использованием средства ведения журнала и без использования e.printStackTrace()

0 голосов
/ 08 января 2020

Я думаю, что лучший способ справиться с этим - вернуть null в оба блока catch и в конец функции. Вы должны проверить возвращаемое лицо из функции null или нет перед использованием. Примечание. Это решение подходит, если только вы не можете изменить сигнатуру функции, чтобы объявить, что она вызывает исключение. В противном случае go с обновлением подписи.

...