博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring-MVC开发之全局异常捕获全面解读
阅读量:6590 次
发布时间:2019-06-24

本文共 2172 字,大约阅读时间需要 7 分钟。

  hot3.png

在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种,

  1. WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法

  2. 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等。

SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉

互相没有依赖,每个都可单独使用!

定义服务器错误WEB.XML整合Spring MVC

web.xml

404
/404
500
/500
java.lang.Exception
/uncaughtException

applicationContext.xml

Spring全局异常,代码入侵方式

异常抛出

@Controller public class MainController {
@ResponseBody @RequestMapping("/") public String main(){
throw new NullPointerException("NullPointerException Test!"); } }

异常捕获

//注意使用注解@ControllerAdvice作用域是全局Controller范围 //可应用到所有@RequestMapping类或方法上的@ExceptionHandler、@InitBinder、@ModelAttribute,在这里是@ExceptionHandler @ControllerAdvice public class AControllerAdvice {
@ExceptionHandler(NullPointerException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public String handleIOException(NullPointerException ex) {
return ClassUtils.getShortName(ex.getClass()) + ex.getMessage(); } }

Spirng全局异常,配置方式

异常抛出,同上!

异常捕获

NullPointerException
IOException

Sping全局异常,自定义异常类和异常解析

自定义异常类:

public class CustomException extends RuntimeException {
public CustomException(){
super(); } public CustomException(String msg, Throwable cause){
super(msg, cause); //Do something... } }

抛出异常

@ResponseBody @RequestMapping("/ce") public String ce(CustomException e){
throw new CustomException("msg",e); }

实现异常捕获接口HandlerExceptionResolver

public class CustomHandlerExceptionResolver implements HandlerExceptionResolver{
@Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
Map
model = new HashMap
(); model.put("e", e); //这里可根据不同异常引起类做不同处理方式,本例做不同返回页面。 String viewName = ClassUtils.getShortName(e.getClass()); return new ModelAndView(viewName, model); } }

配置Spring支持异常捕获

转载于:https://my.oschina.net/liting/blog/498735

你可能感兴趣的文章
面试集锦
查看>>
java 反射
查看>>
我的友情链接
查看>>
unbantu安装 mysql --- 百度云
查看>>
修复RAID-5和镜像磁盘
查看>>
sql2008性能计数器注册表配置单元一致性失败
查看>>
Linux基础命令---ftp
查看>>
LNMP环境搭建
查看>>
我的友情链接
查看>>
每个人都喝过的酒
查看>>
keepalived
查看>>
php+mysql将大数据sql文件导入数据库
查看>>
学习linux—— 磁盘相关指令
查看>>
mysql的配置文件适用5.6与5.7
查看>>
关于我小孩的教育意见
查看>>
我的友情链接
查看>>
c语言指针跨函数使用内存
查看>>
词法分析与语法分析简介
查看>>
JS中的默认行为
查看>>
我的友情链接
查看>>