gpt4 book ai didi

scala - 在 Play 框架中处理异常

转载 作者:行者123 更新时间:2023-12-01 03:47:38 24 4
gpt4 key购买 nike

我正在使用 play 框架 (2.3.x) 来构建一个安静的 API。

今天,我在 API Controller 中的所有 api 函数周围都有一个 try/catch 块,以便能够捕获异常并返回一个通用的“错误 json”对象。

例子:

def someApiFuntion() = Action { implicit request =>
try {
// Do some magic
Ok(magicResult)
} catch {
case e: Exception =>
InternalServerError(Json.obj("code" -> INTERNAL_ERROR, "message" -> "Server error"))
}
}

我的问题是:是否有必要在每个 api 函数中都有一个 try/catch 东西,或者是否有更好/更通用的方法来解决这个问题?

最佳答案

@Mikesname 链接是解决您问题的最佳选择,另一种解决方案是使用 action composition并创建您的操作(以防您想对您的操作有更高的控制):

def APIAction(f: Request[AnyContent] => Result): Action[AnyContent] = {
Action { request =>
try { f(request) }
catch { case _ => InternalServerError(...) }
}
}

def index = APIAction { request =>
...
}

或者使用更惯用的 Scala Try :
def APIAction(f: Request[AnyContent] => Result): Action[AnyContent] = {
Action { request =>
Try(f(request))
.getOrElse(
InternalServerError(Json.obj("code" -> "500", "message" -> "Server error"))
)
}
}

关于scala - 在 Play 框架中处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com