springmvc全局异常处理

1.自定义异常类与自定义异常处理器

1).自定义异常类

/**
*自定义异常类继承Exception
*/
public class SysException extends Exception {
    private String message;

    @Override
    public String getMessage() {
        return message;
    }

    public SysException(String message){
        this.message=message;
    }
}

2).自定义异常处理器

/**
 * 自定义异常处理器实现HandlerExceptionResolver接口
 */
public class SysExceptionResolve implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ModelAndView mv = new ModelAndView();
        SysException sysException =null;
        if(e instanceof SysException){
              sysException= (SysException) e;
        }else {
            sysException = new SysException("服务器进入二次元了");
        }
        mv.addObject("message",sysException.getMessage());
        mv.setViewName("error");
        return mv;
    }
}

2.配置自定义异常处理器和编写error友好界面

1). 在resources目录下的xml文件中配置bean

 <!--配置自定义异常处理器-->
    <bean id="sysExceptionResolve" class="cn.itcast.controller.utils.SysExceptionResolve"></bean>
<!--视图解析器--><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/pages/"></property>    <property name="suffix" value=".jsp"></property></bean>
 

2).编写error友好界面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>异常界面</title>
</head>
<body>
    <h3>${message}</h3>
</body>
</html>

3.测试结果

测试结果的前台代码

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<body>
<h2>Hello World!</h2>

  <a href="/user/exception">Exception测试</a>
</body>
</html>

测试结果的后台代码

@Controller
@RequestMapping("/user")
public class UserController {
     @RequestMapping("/exception")
    public String testException() throws SysException {
         System.out.println("testException...");
         try {
             int a = 10/0;
         } catch (Exception e) {
             e.printStackTrace();
             throw new SysException("查询数据出错了");
         }
         return "success";
    }
}

原文地址:https://www.cnblogs.com/georgeJavaEE/p/9782708.html

时间: 2024-08-07 19:52:31

springmvc全局异常处理的相关文章

SpringMVC 全局异常处理

在 JavaEE 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大.SpringMvc 对于异常处理这块提供了支持,通过 SpringMvc 提供的全局异常处理机制,能够将所有类型的异常处从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护. 全局异常实现方式 Spring MVC

springMVC --全局异常处理(两种方式)

首先看springMVC的配置文件: <!-- 全局异常配置 start --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <pro

全局异常处理springmvc

一.实现HandlerExceptionResolver接口 /** * springmvc 全局异常处理 */ @Slf4j public class GlobalExceptionResolver implements HandlerExceptionResolver{ @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpSe

SpringMVC实现全局异常处理

在springMVC中进行全局异常处理的配置 <bean class="cn.znx.blog.exception.MyExceptionResolver"></bean> 定义全局异常处理类:需要实现HandlerExceptionResolver接口 package cn.znx.blog.exception; import com.google.gson.Gson; import org.springframework.web.bind.annotatio

SpringMVC的全局异常处理

@ControllerAdvice的使用 我们都知道做项目一般都会有全局异常统一处理的类,那么这个类在Spring中可以用@ControllerAdvice来实现. @ControllerAdvice ,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller.使用这个 Controller ,可以实现三个方面的功能: 全局异常处理 全局数据绑定 全局数据预处理 灵活使用这三个功能,可以帮助我们简化很多工作,需要注意的是,这是 SpringMVC 提供的功能,在 Spring Bo

springMVC之异常处理

1. 自定义一个异常类: UserException.java public class UserException extends RuntimeException { private static final long serialVersionUID = 1L; public UserException() { super(); } public UserException(String message, Throwable cause) { super(message, cause);

springmvc 全局异常解决方案

系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生. 系统的dao.service.controller出现都通过throwsException向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 1.自定义异常类: package cn.itcast.ssm.exception; public class CustomerException exten

WEB 项目中的全局异常处理

在web 项目中,遇到异常一般有两种处理方式:try.....catch....:throw 通常情况下我们用try.....catch.... 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉,会造成代码重复和繁杂,我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它. 首先,我们在可能发生异常的方法,全部throw出来,即dao抛给service.service给controller.controller抛给前端控制器: 然后由前端控制器调用 全局异常处理器  对异常

Spring Boot 2 Webflux的全局异常处理

https://www.jianshu.com/p/6f631f3e00b9 本文首先将会回顾Spring 5之前的SpringMVC异常处理机制,然后主要讲解Spring Boot 2 Webflux的全局异常处理机制. SpringMVC的异常处理 Spring 统一异常处理有 3 种方式,分别为: 使用 @ExceptionHandler 注解 实现 HandlerExceptionResolver 接口 使用 @controlleradvice 注解 使用@ExceptionHandle