【发布时间】:2018-03-29 07:08:21
【问题描述】:
我是 Java 新手,不知道何时使用记录器。例如,当我在以下示例中使用记录器时是否合乎逻辑。怎么说“好的,我应该在这里使用记录器”。需要明确的是,我不是在问我应该使用哪个记录器,而是我应该使用记录器吗?
public boolean isValid(Object bean, ConstraintValidatorContext ctx) {
try {
if (Assert.isNull(bean)) {
throw new NullPointerException(EXC_MSG_BEAN_NULL);
}
String dependentFieldActualValue;
dependentFieldActualValue = BeanUtils.getProperty(bean, dependentField);
boolean isActualEqual = stringEquals(dependentFieldValue, dependentFieldActualValue);
if (isActualEqual == ifInEqualThenValidate) {
return true; // The condition is not met => Do not validate at all.
}
return isTargetValid(bean, ctx); // Perform the actual validation on the target field
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
【问题讨论】:
-
在例外?不是。在异常处理期间:当您想要记录出错原因时。
-
如果您重新抛出异常,则不需要在
catch块中添加日志记录,因为希望捕获重新抛出异常的代码会为您记录它,并且由于您确实为重新抛出的异常提供了对原始异常的引用,因此以后的日志记录将包括两者。 -
但是我告诉这里我告诉bean不能为空,我应该在这里也写logger吗?
throw new NullPointerException(EXC_MSG_BEAN_NULL); -
@MertYücel 不。让捕获异常的代码记录它。在异常中包含足够有用的信息,即相关参数和/或值。
标签: java exception logging exception-handling