Spring 中的 Websocket STOMP(或 REST)控制器:捕获反序列化错误?
Websocket STOMP (or REST) Controller in Spring: capture deserialization error?
我有一个 Spring Websocket Stomp 控制器来处理 SEND 消息(类似于 https://spring.io/guides/gs/messaging-stomp-websocket/):
@MessageMapping("/pong")
public void handlePong(IncomingModel model) {...}
如果我的 IncomingModel 可以在幕后正确反序列化,它就可以正常工作。
如果情况并非如此,我会收到类似
的信息
2017-02-21 11:24:31.935 ERROR 12536 --- [nboundChannel-3] .WebSocketAnnotationMethodMessageHandler :
Unhandled exception from message handler method
org.springframework.messaging.converter.MessageConversionException:
Could not read JSON: Can not deserialize value of type java.lang.Long from String "2017-02-21T09:24:31.917Z": not a valid Long value
如何在我的代码中捕获并处理这个错误?
我想情况与 REST 控制器相同。
您可以在处理 MessageConversionException
的方法上放置 @MessageExceptionHandler(MessageConversionException.class)
注释。或注释 @MessageExceptionHandler()
没有参数来处理任何异常。
我有一个 Spring Websocket Stomp 控制器来处理 SEND 消息(类似于 https://spring.io/guides/gs/messaging-stomp-websocket/):
@MessageMapping("/pong")
public void handlePong(IncomingModel model) {...}
如果我的 IncomingModel 可以在幕后正确反序列化,它就可以正常工作。
如果情况并非如此,我会收到类似
的信息2017-02-21 11:24:31.935 ERROR 12536 --- [nboundChannel-3] .WebSocketAnnotationMethodMessageHandler :
Unhandled exception from message handler method
org.springframework.messaging.converter.MessageConversionException:
Could not read JSON: Can not deserialize value of type java.lang.Long from String "2017-02-21T09:24:31.917Z": not a valid Long value
如何在我的代码中捕获并处理这个错误? 我想情况与 REST 控制器相同。
您可以在处理 MessageConversionException
的方法上放置 @MessageExceptionHandler(MessageConversionException.class)
注释。或注释 @MessageExceptionHandler()
没有参数来处理任何异常。