我正在尝试在此方法中使用ReflectiveOperationException
,但我收到UnhandeledException
错误但是当我用
throw new ReflectiveOperationException("izuoizoiuz");
比没有错误。如何避免此UnhandeledException
错误。
@Override
public boolean isValid(Object bean, ConstraintValidatorContext ctx) {
try {
if (Assert.isNull(bean)) {
logger.info(EXC_MSG_BEAN_NULL, bean.toString());
}
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) {
logger.info("Necessary attributes can't be accessed: {}");
throw new ReflectiveOperationException("izuoizoiuz");
}
}
答案 0 :(得分:2)
ReflectiveOperationException
是“已检查”的例外情况。这意味着你的方法需要声明它可以抛出它:
public boolean isValid(Object bean, ConstraintValidatorContext ctx) throws ReflectiveOperationException {
另请注意,您不必创建新的ReflectiveOperationException。您可以throw e
重新抛出原始文件,保持其堆栈跟踪等。
答案 1 :(得分:1)
它是一个Checked异常,需要使用方法签名声明(带抛出)或需要像你一样显式抛出。
由编译器强制执行。 您可以使用包装器异常将已检查的异常转换为未经检查的异常。
public Object loadTest (int objId)
{
try {
Connection c = Database.getConnection();
PreparedStatement query = conn.prepareStatement(OBJECT_QUERY);
query.setInt(1, objId);
ResultSet rs = query.executeQuery();
...
} catch (SQLException ex) {
throw new RuntimeException("Cannot query object " + objId, ex);
}
}