try catch问题

时间:2012-10-03 12:26:59

标签: java exception

我从控制器抛出异常,如下面的

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吗?

2 个答案:

答案 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方法的调用?无论如何,在检查这些集合的大小或插入新值时,您还有什么例外?

我无法给你代码,因为我正在通过手机打字,但这是你可以做的:

  1. 指示包含代码的方法在方法签名中抛出ValidationFailureException。

  2. 删除您提供的try catch块并删除if块,该块检查validationResult是否为非空以及if块内的代码。

  3. 如果formValidationResult不为空,则将错误消息存储在validationResult中并抛出ValidationFailureException。

  4. 就是这样。干净简单。不需要任何try-catch块,也不需要在抛出ValidationFailureException之前单独检查validationResult是否为空。