【问题标题】:How to handle a PSQL exception and return in my JSON action如何处理 PSQL 异常并在我的 JSON 操作中返回
【发布时间】:2017-07-31 01:22:36
【问题描述】:

我有一个 JSON 操作,它返回一个非常简单的 JSON 对象,如下所示:

case class InsertResponse(success: Boolean, message: String)

我返回 JSON 的操作如下所示:

def insertUser = Action.async(BodyParsers.parse.json) { request =>
  val userReq = request.body.validate[UserRequest]

  userReq.fold(
    errors => {
        Future(Ok(....))
    },
    userR => {

      val insertResultFut = 
        for {
           user <- .......
        } yield ....



        Ok(insertResponse.toJson)

    }
  )

}

所以我想捕获 insertResultFut 调用可能抛出的某些异常,因为它调用了插入数据库的光滑数据库层。

如果用户的电子邮件重复,我想防止引发 PSQLException,我如何使用 futures 捕获此错误?

如果出现异常,并且它是重复键的 PSQLException,我想捕捉它并将我的 InsertResponse 成功标志设置为 false 等。

想法?

【问题讨论】:

    标签: json scala playframework slick


    【解决方案1】:

    对于这种情况,您可以使用Future#recover

    insertResultFut.recover {
      case exe: PSQLException if exe.getMessage.contains("duplicate") => BadRequest(InsertResponse(false, "duplicate").toJson)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2012-10-12
      • 2010-10-18
      • 2019-06-26
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多