grails - 如何处理 groovy 方法中的多个返回类型?

标签 grails groovy

我需要一种方法,在成功时返回 Id,在失败时返回错误列表。 前代码片段:

def save = {
   def errors = []
    if(Employee.save(flush:true)){
      return Employee.id
    }else{
      errors.add("Can't be saved")
      return errors.
    }

   } 

在服务类中 网络电话 Employee.save() - ..那么如何检查 save 方法返回的是错误还是 id

如有任何建议,我们将不胜感激。

最佳答案

我同意 Burk 不要返回不同的类型,这可能会导致意外的错误。 解决这个问题的另一个方法是使用Java的异常处理机制。您可以向异常添加一个上下文字段,该字段将保存验证错误列表。捕获异常后,您可以提取错误。

void save(Employee employee) {
    // do save
    // ...

    // on error:
    def errors = [ "terrible error nr. 5" ]
    throw new ValidationException(errors)
}


try {
    fooService.save(employee)
} catch(ValidationException e) {
    def errors = e.erorrs
    // do stuff with the errors
}

另一个优点:当预计不会出现验证错误时,可以在 Groovy 中省略 try-catch block ,这使得代码更简洁,因为您不必关心任何验证错误字段。

关于grails - 如何处理 groovy 方法中的多个返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327091/

相关文章:

mysql - 通信链接失败时Grails重新连接到mysql

javascript - Grails TagLib 获取元素值

mysql - mysql 上的 Grails 事务 setSavePoint 方法导致异常

Jenkins Workflow 构建新工作

java - Java 脚本引擎中的字符串表达式插值支持

hibernate - Grails Hibernate Filters插件似乎正在运行,但未过滤结果

tomcat - 部署 war tomcat 时出错

java - 带有 Spock Stub 的泛型

performance - 使用Grails hasMany关系时如何解决潜在的性能问题?

java - Grails 依赖解析