繁体   English   中英

在play框架中处理错误

[英]Error handling in play framework

我正在使用play框架开发REST API。 我想为我的所有操作实现集中的错误处理。

实现这一目标的最佳方法是什么?

另一种方法是使用过滤器 ,例如:

object ExceptionFilter extends EssentialFilter {
  def apply(nextFilter: EssentialAction) = new EssentialAction {
    def apply(requestHeader: RequestHeader) = {
      val next: Iteratee[Array[Byte], Result] = nextFilter(requestHeader)

      // Say your backend throws an ItemNotFound exception.
      next recoverWith {
        case e: ItemNotFound => Iteratee.ignore[Array[Byte]]
          .map(_ => Results.NotFound("Item not in the database!"))
      }
    }
  }
}

然后在全局设置中将其挂钩:

object Global extends WithFilters(CSRFFilter(), ExceptionFilter) with GlobalSettings

如果需要,这可能允许您对请求正文执行某些操作。 我同意在大多数情况下使用GlobalSettings.onError可能是最简单的方法。

你应该看一下GlobalSettingshttps//www.playframework.com/documentation/2.3.x/ScalaGlobal

特别是,它允许您覆盖:

def onError(request: RequestHeader, ex: Throwable)
def onHandlerNotFound(request: RequestHeader)
def onBadRequest(request: RequestHeader, error: String)

onError可能就是你要找的那个,但其他的也可能有用:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM