如何在静态方法中使用log.info

问题描述 投票:0回答:1

我的功能看起来像。

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?

java logging static
1个回答
0
投票
  1. 只要把你的日志字段做成静态的就可以了。反正这是行业标准。
  2. 这是令人遗憾的错误处理。如果你的反射调用出了问题,这个方法就会返回1.0。这似乎是非常愚蠢的行为。一般来说,如果你没有办法正确处理的话,你应该直接抛出异常(而'记录下来,然后返回一些抛出的默认值'很少是有效的'处理'策略!),因为你的做法会导致一长串异常,或者直接做错事的代码,因为就像他们说的那样,垃圾进,垃圾出,面对定义的问题,返回1.0听起来肯定是那1.0就是垃圾,不是吗?
  3. 如果你的目的是完全忽略这一切的意义,把它分流到日志中,然后返回一个默认值,你可以直接捕捉Exception。
© www.soinside.com 2019 - 2024. All rights reserved.