2012-10-03 118 views
1

我抛出一个异常,从控制器,如下面问题与尝试捕捉

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

+1

当结果的大小为'> 0'时,您将得到您显示的代码中引发的异常。你的问题不是很清楚。 – assylias

+1

为什么你想抓住你刚刚抛出的异常? –

回答

1

假设validationResult和formValidationResult是集合,我不明白为什么需要将调用大小并将方法放在try catch块中?无论如何,您在检查这些藏品的大小或插入新的价值时有什么异常?

我不能给你的代码,因为我从我的手机打字,但这是你可以做什么:

  1. 表明,包含你的代码的方法方法签名抛出一个ValidationFailureException。

  2. 删除已经呈现的try catch块,并删除if块,检查validationResult是否为非空以及if块内的代码。

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

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

5

是Java允许it.You可以抛出,并使用try catch块

try 
    { 
     throw new Exception(); 
    } 
    catch (Exception e) { 
     // TODO: handle exception 
    } 

在这里,你扔,并在同一个块移交的异常处理异常。 我不知道为什么有人愿意这样做。

一个更好的办法可能是有你的方法定义为throws ValidationFailureException和处理来自被调用此代码的功能异常。