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() 没有参数来处理任何异常。