读取数据时,Spring HttpMessageConverter
必须如何处理无效EOF?也就是说,在这种情况下,SpringMVC的其余部分如何期望客户转换器发出错误请求的信号?
用于读取数据的方法的签名是
T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException
因此,有两种选择可以用来发出发现无效EOF的信号:
- 抛出一个
IOException
(应该是EOFException
) - 抛出一个
HttpMessageNotReadableException
(它本身可能有一个EOFException
作为它的cause()
)
第二个选项可能更好,因为它更容易将其转换为响应代码400。IOException
是一个过于普遍的例外,无法对其进行任何特殊处理
Spring自己的MappingJackson2HttpMessageConverter
也将所有IOException
转换为HttpMessageNotReadableException
。