我从控制器抛出异常,如下面的
try {
if (formValidationResult.size() > 0) {
validationResults.put(errorMsg, formValidationResult);
}
} catch (Exception exception) {
LOGGER.error("Error while performing validation in FormController -->"
+ exception.getMessage());
throw new ServiceException(exception.getMessage());
}
if (validationResults.size() > 0) {
throw new ValidationFailureException(validationResults,"Validation Error");
}
我在这里收到验证错误;
com.ge.dbt.common.exception.ValidationFailureException:验证 错误
我可以包含一个catch块来捕获ValidationFailureException
吗?
答案 0 :(得分:5)
是Java允许它。您可以使用try catch块抛出并处理异常
try
{
throw new Exception();
}
catch (Exception e) {
// TODO: handle exception
}
在这里,您在同一个区块中抛出并处理异常。 我不知道为什么有人愿意这样做。
更好的方法可能是让您的方法定义为throws ValidationFailureException
并从调用此代码的函数处理该异常。
答案 1 :(得分:1)
假设validationResult和formValidationResult是集合,我不明白为什么需要在try catch块中包含对size和put方法的调用?无论如何,在检查这些集合的大小或插入新值时,您还有什么例外?
我无法给你代码,因为我正在通过手机打字,但这是你可以做的:
指示包含代码的方法在方法签名中抛出ValidationFailureException。
删除您提供的try catch块并删除if块,该块检查validationResult是否为非空以及if块内的代码。
如果formValidationResult不为空,则将错误消息存储在validationResult中并抛出ValidationFailureException。
就是这样。干净简单。不需要任何try-catch块,也不需要在抛出ValidationFailureException之前单独检查validationResult是否为空。