Java 试捕问题

Java 试捕问题,java,exception,Java,Exception,我正在从控制器抛出一个异常,如下所示 try { if (formValidationResult.size() > 0) { validationResults.put(errorMsg, formValidationResult); } } catch (Exception exception) { LOGGER.error("Error while performing validation in FormController -->"

我正在从控制器抛出一个异常,如下所示

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

是的,Java允许。您可以使用try-catch块来引发和处理异常

   try
    {
        throw new Exception();
    }
    catch (Exception e) {
        // TODO: handle exception
    }
在这里,您将在同一块中抛出和处理异常我不知道为什么有人愿意这样做。


更好的方法是让您的方法定义为
抛出ValidationFailureException
,并从调用此代码的函数中处理该异常。

是Java允许的。您可以使用try-catch块抛出并处理异常

   try
    {
        throw new Exception();
    }
    catch (Exception e) {
        // TODO: handle exception
    }
在这里,您将在同一块中抛出和处理异常我不知道为什么有人愿意这样做。


更好的方法是让您的方法定义为
抛出ValidationFailureException
,并从调用此代码的函数处理该异常。

假设validationResult和formValidationResult是集合,我不明白为什么需要将对大小的调用封装起来,并将方法放入try-catch块中?检查这些集合的大小或插入新值时,您希望出现什么异常

我不能给你密码,因为我正在用手机打字,但你可以这样做:

  • 指示包含代码的方法在方法签名中引发ValidationFailureException

  • 删除您提供的try-catch块,并删除检查validationResult是否为非空以及if块中的代码的if块

  • 如果formValidationResult不为空,请将错误消息存储在validationResult中,并引发ValidationFailureException


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

    假设validationResult和formValidationResult是集合,我不明白为什么需要将对size的调用封装起来,并将方法放入try-catch块中?检查这些集合的大小或插入新值时,您希望出现什么异常

    我不能给你密码,因为我正在用手机打字,但你可以这样做:

  • 指示包含代码的方法在方法签名中引发ValidationFailureException

  • 删除您提供的try-catch块,并删除检查validationResult是否为非空以及if块中的代码的if块

  • 如果formValidationResult不为空,请将错误消息存储在validationResult中,并引发ValidationFailureException


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

    当结果的大小为
    >0
    时,将在显示的代码中引发异常。您的问题不太清楚。为什么要捕获刚刚抛出的异常?当结果的大小为
    >0
    时,您将在显示的代码中得到抛出的异常。您的问题不太清楚。为什么要捕获刚刚抛出的异常?