springmvc3.2.4版本HandlerExceptionResolver不起作用

wzcaimiao 2015-10-18 01:04:18
先上代码如下:一个统一异常处理类 ExceptionHandler

后台一个Controller


controller中login方法参数id类型为Long类型

访问地址为: http:127.0.0.1:8080/spring/login.do?id=a,由于a是字符类型,不能转化成long类型,spring会出现org.springframework.beans.TypeMismatchException异常

使用spring3.0.5版本,进入到 ExceptionHandler类中进行统一异常捕获,
但是在spring3.2.4版本中,不会进入到ExceptionHandler中,该如何解决?

已经测试使用spring3.2.4版本,如果login方法内部抛出异常,ExceptionHandler会捕获到
求牛人解决


...全文
177 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhongyangjian 2015-10-19
我是参考网上使用继承,自己定义的一个父类,写上这个方法,就可以统一处理到异常,我用的mvc用的3.2X public class BaseController { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); //异常统一处理 @ExceptionHandler public String exception(HttpServletRequest request, Exception e,HttpServletResponse response) { try { if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ Map<String, Object> error = new HashMap<String, Object>(); error.put("success", false); error.put("errCode", "-2");//系统异常代码 error.put("message", "System error!"); error.put("data", "-2"); // 兼容extjs form loading response.setCharacterEncoding("UTF-8"); PrintWriter printWriter=response.getWriter(); printWriter.write(JacksonUtil2.toJson(error)); printWriter.flush(); printWriter.close(); return null; }else{ //添加自己的异常处理逻辑,如日志记录    request.setAttribute("exceptionMessage", e.getMessage()); return "common/error"; } } catch (Exception ex) { ex.printStackTrace(); } return "common/error"; } }
回复
wzcaimiao 2015-10-19
用@ExceptionHandler注解的方式没试过,我用的是实现HandlerExceptionResolver 的方式试过不行。用注解的方式我估计不行,异常是出现在DispatcherServlet这一层参数转化的时候,还没进入到controller这一层的方法中,晚上试试注解的方式
回复
wzcaimiao 2015-10-18
对spring3.2.4debug信息如下 [ DEBUG ] -[org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] Resolving exception from handler [public java.lang.String simpleurltest1.LoginTestAnnotation.login(java.lang.String,java.lang.Long,javax.servlet.http.HttpServletRequest,org.springframework.ui.ModelMap)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "a" [ DEBUG ] -[org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver] Resolving exception from handler [public java.lang.String simpleurltest1.LoginTestAnnotation.login(java.lang.String,java.lang.Long,javax.servlet.http.HttpServletRequest,org.springframework.ui.ModelMap)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "a" [ DEBUG ] -[org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] Resolving exception from handler [public java.lang.String simpleurltest1.LoginTestAnnotation.login(java.lang.String,java.lang.Long,javax.servlet.http.HttpServletRequest,org.springframework.ui.ModelMap)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "a"
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-10-18 01:04
社区公告
暂无公告