使用acceptWithActor时如何捕获json解析错误?

椎名

我在playframework 2.3中使用了websockets。

这是官方指南页面的摘录

def socket = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
    MyWebSocketActor.props(out)
}

当我使用代码时,如何捕获json解析错误(RuntimeException:解析JSON错误)?

詹姆斯·罗珀

您不能使用内置的json帧格式化程序,这是源代码:

https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/mvc/WebSocket.scala#L80

如果Json.parse引发异常,它将将该异常引发给Netty,Netty将警告Netty异常处理程序,该处理程序将关闭WebSocket。

您可以做的是定义自己的json帧格式化程序来处理异常:

import play.api.mvc.WebSocket.FrameFormatter

implicit val myJsonFrame: FrameFormatter[JsValue] = implicitly[FrameFormatter[String]].transform(Json.stringify, { text => 
  try {
    Json.parse(text)
  } catch {
    case NonFatal(e) => Json.obj("error" -> e.getMessage)
  }
})

def socket = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
  MyWebSocketActor.props(out)
}

然后,在您的WebSocket actor中,您可以检查具有错误字段的json消息,并根据您的意愿对其进行响应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用acceptWithActor时如何捕获json解析错误?

来自分类Dev

如何捕获SVG解析错误?

来自分类Dev

正文解析器捕获错误的JSON

来自分类Dev

使用Knex.JS添加字段时如何捕获错误

来自分类Dev

使用 pm2 restart / reload 时如何捕获错误

来自分类Dev

使用 Laravel Auth 时如何捕获 QueryException 错误

来自分类Dev

如何在使用变量时解析JSON?

来自分类Dev

如何从 SSMS 获取我的 JSON?(解析 EntityName 时发生错误)

来自分类Dev

尝试使用 Face API 时出现 JSON 解析错误

来自分类Dev

json解析错误-未捕获的TypeError:无法使用'in'运算符搜索'1009'

来自分类Dev

使用JSON字符串解析URL时捕获到IllegalArgumentException

来自分类Dev

创建ObjectId时如何捕获错误

来自分类Dev

使用EaselJS位图时捕获错误的URL

来自分类Dev

使用 bulkProcessor 时捕获 Elasticsearch 批量错误

来自分类Dev

使用填充猫鼬时捕获错误

来自分类Dev

解析具有意外属性的json时发生错误-如何放宽解析规则?

来自分类Dev

JSON解析:未捕获的语法错误:意外的令牌e

来自分类Dev

使用递归解析json时如何获取ID?

来自分类Dev

错误:JSON解析错误:使用角度转换时,属性名称必须是字符串文字

来自分类Dev

JSON解析正常时,解析JSON会返回错误

来自分类Dev

尝试将Json数据解析为Model Class时,使用可编码时出现此错误

来自分类Dev

Javascript:如何在使用window.location.href = url导航到页面时捕获错误

来自分类Dev

使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

来自分类Dev

使用RSpec测试时,如何在Sidekiq worker中正确捕获错误?

来自分类Dev

使用流程替换时,如何捕获退出代码/正确处理错误?

来自分类Dev

使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

来自分类Dev

使用ACTION_IMAGE_CAPTURE Intent时如何正确地错误捕获Android相机活动

来自分类Dev

在multer中使用文件过滤器时如何捕获错误?

来自分类Dev

使用 Alamofire - Swift 3 上传对象时如何捕获错误?

Related 相关文章

  1. 1

    使用acceptWithActor时如何捕获json解析错误?

  2. 2

    如何捕获SVG解析错误?

  3. 3

    正文解析器捕获错误的JSON

  4. 4

    使用Knex.JS添加字段时如何捕获错误

  5. 5

    使用 pm2 restart / reload 时如何捕获错误

  6. 6

    使用 Laravel Auth 时如何捕获 QueryException 错误

  7. 7

    如何在使用变量时解析JSON?

  8. 8

    如何从 SSMS 获取我的 JSON?(解析 EntityName 时发生错误)

  9. 9

    尝试使用 Face API 时出现 JSON 解析错误

  10. 10

    json解析错误-未捕获的TypeError:无法使用'in'运算符搜索'1009'

  11. 11

    使用JSON字符串解析URL时捕获到IllegalArgumentException

  12. 12

    创建ObjectId时如何捕获错误

  13. 13

    使用EaselJS位图时捕获错误的URL

  14. 14

    使用 bulkProcessor 时捕获 Elasticsearch 批量错误

  15. 15

    使用填充猫鼬时捕获错误

  16. 16

    解析具有意外属性的json时发生错误-如何放宽解析规则?

  17. 17

    JSON解析:未捕获的语法错误:意外的令牌e

  18. 18

    使用递归解析json时如何获取ID?

  19. 19

    错误:JSON解析错误:使用角度转换时,属性名称必须是字符串文字

  20. 20

    JSON解析正常时,解析JSON会返回错误

  21. 21

    尝试将Json数据解析为Model Class时,使用可编码时出现此错误

  22. 22

    Javascript:如何在使用window.location.href = url导航到页面时捕获错误

  23. 23

    使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

  24. 24

    使用RSpec测试时,如何在Sidekiq worker中正确捕获错误?

  25. 25

    使用流程替换时,如何捕获退出代码/正确处理错误?

  26. 26

    使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

  27. 27

    使用ACTION_IMAGE_CAPTURE Intent时如何正确地错误捕获Android相机活动

  28. 28

    在multer中使用文件过滤器时如何捕获错误?

  29. 29

    使用 Alamofire - Swift 3 上传对象时如何捕获错误?

热门标签

归档