Как получить log.info в методе stati c - PullRequest
0 голосов
/ 28 мая 2020

Моя функция выглядит так:

public static double isOverturn(final String reference, final String hypothesis, FieldType fieldType) {
        double overturnScore = 1.0;
        if (StringUtils.isEmpty(reference) || StringUtils.isEmpty(hypothesis))
            return overturnScore;
        Method comparisonMethod = null;
        try {
            comparisonMethod = comparison(fieldType.getName());
            overturnScore = (double) comparisonMethod.invoke(null, reference, hypothesis);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return overturnScore;
    }

Я хочу иметь log.info вместо e.printStackTrace. Но это дает мне ошибку. Как использовать log.info в методе stati c?

1 Ответ

0 голосов
/ 28 мая 2020
  1. Просто сделайте свое поле журнала stati c. В любом случае это промышленный стандарт.
  2. Это прискорбная обработка ошибок. Если что-то пойдет не так с вашим рефлексивным вызовом, этот метод вернет 1.0. Это кажется очень глупым поведением. Как правило, вы должны просто генерировать исключения, если вы ничего не можете сделать, чтобы обработать это должным образом (и `` зарегистрировать его и вернуть какое-то одноразовое значение по умолчанию '' редко является допустимой стратегией `` обработки этого ''!), Потому что то, что вы делаете, приводит к длинной цепочке исключений, или код, который работает прямо неправильно, потому что, как говорится, мусор на входе, мусор на выходе и возвращение 1.0 перед лицом проблем с определениями наверняка звучит так, как будто 1.0 - это просто мусор, не так ли?
  3. Вы можете просто перехватить Exception, если вы намерены полностью игнорировать то, что все это означает, перенести его в журнал и вернуть значение по умолчанию.
...