当前位置: 首页 > news >正文

o2o商城网站系统开发yahoo引擎入口

o2o商城网站系统开发,yahoo引擎入口,政府网站建设 对策,专业的led网站建设定义错误页面 SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会像/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicExceptionController 来处理/error 请求,然后跳转到…

定义错误页面

SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会像/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicExceptionController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息

如 果 我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自 定 义 的 错 误 页 面 , 需 要 在src/main/resources/templates 目录下创建 error.html 页面。注意:名称必须叫 error
 

 @ExceptionHandler 处理

针对特定的异常做出不同的处理,我们可以通过@ExceptionHandle来处理实现,具体如下

@Controller
public class UserController {/*** 模拟 NullPointerException* @return*/@RequestMapping("/show1")public String showInfo(){String str = null;str.length();return "index";}/*** 模拟 ArithmeticException* @return*/@RequestMapping("/show2")public String showInfo2(){int a = 10/0;return "index";}/*** java.lang.ArithmeticException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.ArithmeticException.class})public ModelAndView arithmeticExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error1");return mv;}/*** java.lang.NullPointerException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.NullPointerException.class})public ModelAndView nullPointerExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error2");return mv;}
}

 错误页面

<!DOCTYPE html>
<html lang="en" >
<head><meta charset="UTF-8"><title>错误页面</title>
</head>
<body>
出错了,请与管理员联系。。。错误提示页面-ArithmeticException<br>
<span th:text="${error}"></span>
</body>
</html>
<!DOCTYPE html>
<html lang="en" >
<head><meta charset="UTF-8"><title>错误页面</title>
</head>
<body>
出错了,请与管理员联系。。。错误提示页面-NullPointerException <br>
<span th:text="${error}"></span>
</body>
</html>

 

 @ControllerAdvice+@ExceptionHandler处理

第二种处理方式中,异常处理的代码和业务代码放在一个类中了,这种方式耦合性太强了,最好是将业务和异常处理的代码分离开,这时我们可以定义一个专门的异常处理类,通过注解@ControllerAdvice来实现。具体如下:

@ControllerAdvice
public class GlobalException {/*** java.lang.ArithmeticException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.ArithmeticException.class})public ModelAndView arithmeticExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString()+" -- advice");mv.setViewName("error1");return mv;}/*** java.lang.NullPointerException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.NullPointerException.class})public ModelAndView nullPointerExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString()+" -- advice");mv.setViewName("error2");return mv;}
}

控制器中实现

@Controller
public class UserController {/*** 模拟 NullPointerException* @return*/@RequestMapping("/show1")public String showInfo(){String str = null;str.length();return "index";}/*** 模拟 ArithmeticException* @return*/@RequestMapping("/show2")public String showInfo2(){int a = 10/0;return "index";}
}

SimpleMappingExceptionResolver处理 

我们还可以通过SimpleMappingExceptionResolver将具体的异常和错误页面指定对应关系,这样就不用每个异常都单独写一个方法了。

@Configuration
public class GlobalException {/*** 该方法必须要有返回值。返回值类型必须是:SimpleMappingExceptionResolver*/@Beanpublic SimpleMappingExceptionResolvergetSimpleMappingExceptionResolver(){SimpleMappingExceptionResolver resolver = newSimpleMappingExceptionResolver();Properties mappings = new Properties();/*** 参数一:异常的类型,注意必须是异常类型的全名* 参数二:视图名称*/mappings.put("java.lang.ArithmeticException", "error1");mappings.put("java.lang.NullPointerException","error2");//设置异常与视图映射信息的resolver.setExceptionMappings(mappings);return resolver;}
}

自定义HandlerExceptionResolver处理

最后我们还可以通过实现HandlerExceptionResolver 接口来根据不同异常类型来动态处理异常。

@Configuration
public class GlobalException implements HandlerExceptionResolver {/*** @param httpServletRequest* @param httpServletResponse* @param o* @param e* @return*/@Overridepublic ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {ModelAndView mv = new ModelAndView();//判断不同异常类型,做不同视图跳转if (ex instanceof ArithmeticException) {mv.setViewName("error1");}if (ex instanceof NullPointerException) {mv.setViewName("error2");}mv.addObject("error", ex.toString());return mv;}
}

http://www.hkea.cn/news/672744/

相关文章:

  • 吴江建设局网站郑州粒米seo外包
  • 建设工程合同纠纷与劳务合同纠纷seo培训教程视频
  • 找网站建设公司哪家最好沈阳市网站
  • sh域名做的好的网站什么是营销
  • 网站平台怎么做推广一站式网络推广服务
  • 百度对新网站排名问题兰州seo快速优化报价
  • 网站建设常用代码湘潭网络推广
  • 做网站上传图片一直错误好用搜索引擎排名
  • 钟祥网站建设网络推广的含义
  • 新闻类网站源码青岛官网seo
  • 网站优化哪里可以做百度营销客户端
  • 常德建设局网站北京优化网站方法
  • 用ip做网站优化手机流畅度的软件
  • 为网站添加统计媒介
  • 商业设计网站推荐互联网营销师证书是国家认可的吗
  • 做网站的是干嘛的怎样把自己的产品放到网上销售
  • 品牌型网站制作价格2022年小学生新闻摘抄十条
  • 政府网站群集约化建设网络暴力事件
  • 可以做卷子的网站游戏app拉新平台
  • 长沙优化网站关键词社区营销
  • 个人网站制作价格表重庆关键词优化
  • 网站开发ideseo优化网站模板
  • 关于制作网站收费标准怎样把个人介绍放到百度
  • 网站建设 绵阳百度开放平台
  • discuz修改网站标题微信小程序开发平台
  • 怎么做国内网站吗seo顾问培训
  • 网站排名不稳定怎么办seo+网站排名
  • 做网站要淘宝热搜关键词排行榜
  • 做网站 创业 流程网络建站流程
  • 怎么做购物网站系统文本广州网络营销推广