您现在的位置是:首页 > 数码 > 

异常处理器

2025-07-17 23:31:02
异常处理器        在Spring MVC中,提供了一个全局异常处理器,用于对系统中出现的异常进行统一的处理。在一般的系统中,DAO,Service及Controller层都出现的异常都以“throws Exception”的形式向上层抛出,最后都会由Spring MVC的前端控制器DispatcherServlet统一由全局异常处理

异常处理器

       在Spring MVC中,提供了一个全局异常处理器,用于对系统中出现的异常进行统一的处理。在一般的系统中,DAO,Service及Controller层都出现的异常都以“throws Exception”的形式向上层抛出,最后都会由Spring MVC的前端控制器DispatcherServlet统一由全局异常处理器进行异常处理。

对于预期的异常,通常要定义一个自定义异常类,该类用于在发生异常后,存储异常信息,最终交给全局异常处理器处理该异常。

第一步:自定义一个UserException

public class UserException extends Exception{//异常信息private String message;public UserException(String message){supper(message);= message;}public String getMessage(){return message;}public void setMessage(String message){ = message;}
}

第二步:定义全局异常处理器,该处理器主要实现的功能是

       第一:解析出异常,判断异常属于哪种异常类

       第二:如果该异常属于系统自定义的异常,直接取出其异常信息,并在错误页面展示,若非自定义异常,则构造一个自定义的异常类型,信息为未知错误。

       第三:构建异常信息展示视图信息,将异常信息绑定到异常界面的Model域中,然后跳转到相关的异常信息显示界面。

全局异常处理器这里命名为UserExceptionResolver,该异常类需要实现Srping MVC提供的HandlerExceptionResolver接口

public class UserExceptionResolver implements HandlerExceptionResolver{@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletRespe   respe,Object handler,Exception ex){//1:解析出异常类型UserException userException =null;if(ex instanceof UserException){//2:若该异常属于系统自定义异常,则直接取出异常信息,在错误页面展示userException =(UserException)ex;}else{//:若非自定义异常,则构造一个自定义的异常类型(信息为未知错误);userException = new UserException(未知错误);}//错误信息String message = userException.getMessage();ModelAndView modelAndView = new ModelAndView();//将错误信息传到界面modelAndView.addObject(message,message);//指向到错误界面modelAndView.setViewame(/errorPage/userError);return modelAndView;}}

       小贴士:定义全局异常处理器需要实现HandlerExceptionResolver接口并实现resolverException方法

第三步:定义异常显示界面userError.jsp

<%@ page language=java contentType=text/html; charset=UTF-8pageEncoding=UTF-8%>
<!DOCTYPE html PUBLIC -//WC//DTD HTML 4.01 Transitional//E .dtd>
<html>
<head><title>提示</title>
</head>
<body><img src=${pageContext.}/image/error.jsp with=50px;height=50px;/></br>抱歉,访问异常,具体信息如下:</br><h2><font color=red>${message}</font></h2></br>
</body>
</html>

第四步:验证自定义异常抛出和全局异常处理器的作用。

@RequestMapping(login)
public String login(Model model,@Valid User user,BindingResult result) throws UserException{//查询用户是否为黑名单用户boolean isBlackUser = checkBlackList(user);if(isBlackUser){throw new UserException(无权访问!);}//...其他逻辑代码return /user/loginSuccess;
}
private boolean checkBlackList(User user){String blackArray[] = {jack,tom,jean}; for(int i=0;i<blackArray.length;i){if(user.getUsername().equals(blackArray[i]));return true;}}return false;
}

第五步:在springmvc中将定义好的全局异常处理器配置进去

<bean class=UserExceptionResolver></bean>

 

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/808385.html

相关标签:无
上传时间: 2024-01-20 04:31:56

上一篇:融云相关问题

下一篇:fileUpload上传视频

留言与评论(共有 8 条评论)
本站网友 流量交换联盟
17分钟前 发表
若非自定义异常,则构造一个自定义的异常类型(信息为未知错误);userException = new UserException(未知错误);}//错误信息String message = userException.getMessage();ModelAndView modelAndView = new ModelAndView();//将错误信息传到界面modelAndView.addObject(message
本站网友 信和财富
29分钟前 发表
HttpServletRespe respe
本站网友 验证码大全
22分钟前 发表
对于预期的异常,通常要定义一个自定义异常类,该类用于在发生异常后,存储异常信息,最终交给全局异常处理器处理该异常
本站网友 醋蛋液的做法
14分钟前 发表
Service及Controller层都出现的异常都以“throws Exception”的形式向上层抛出,最后都会由Spring MVC的前端控制器DispatcherServlet统一由全局异常处理器进行异常处理
本站网友 ghz是什么意思
1分钟前 发表
全局异常处理器这里命名为UserExceptionResolver,该异常类需要实现Srping MVC提供的HandlerExceptionResolver接口 public class UserExceptionResolver implements HandlerExceptionResolver{@Overridepublic ModelAndView resolveException(HttpServletRequest request
本站网友 验孕棒不准六种情况
26分钟前 发表
@Valid User user
本站网友 优尚美家
10分钟前 发表
@Valid User user