加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring 3.0 WebMVC中的Catch参数解析异常

发布时间:2020-12-15 03:09:18 所属栏目:Java 来源:网络整理
导读:我使用 Spring WebMVC来提供REST API.我用的方法就像 @RequestMapping(“/ path({id}”)void getById(@PathVariable(“id”)int id){}方法. 当客户端错误地将字符串而不是整数id放入查询时,我得到一个NumberFormatException,如: java.lang.NumberFormatExce
我使用 Spring WebMVC来提供REST API.我用的方法就像

@RequestMapping(“/ path({id}”)void getById(@PathVariable(“id”)int id){}方法.

当客户端错误地将字符串而不是整数id放入查询时,我得到一个NumberFormatException,如:

java.lang.NumberFormatException: For input string: "dojo"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Long.parseLong(Long.java:410)
    at java.lang.Long.valueOf(Long.java:525)
    at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:158)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:59)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:1)
    at org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.convert(GenericConversionService.java:420)
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:37)
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:135)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:199)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:104)
    at org.springframework.beans.SimpleTypeConverter.convertIfNecessary(SimpleTypeConverter.java:47)
    at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:526)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolvePathVariable(HandlerMethodInvoker.java:602)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:289)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:163)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)

我的问题是现在,我怎么能优雅地抓住它?我知道Spring提供了@ExeptionHandler注释,但我不想一般地抓住NFE.我希望能够捕获所有解析异常,以便向客户端提供一个很好的错误消息.

有任何想法吗?

干杯,

一月

解决方法

这是实际的例外吗? (它与您的代码示例不匹配)通常人们会希望将其包装在org.springframework.beans.TypeMismatchException中,这可能是特定的,您可以为它编写@ExceptionHandler方法.

如果这不够具体,你将需要放弃Spring-Magic并将参数类型更改为String自己解析它.然后你可以按照自己喜欢的方式处理它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读