SpringMVC框架异常处理

步骤:

1、自定义一个异常类;

2、自定义异常处理器;

3、配置异常处理器;

4、演示代码;

一、自定义一个异常类

注意:该类要继承Exception类

package cn.gpxxg.exception;

public class SysException extends Exception {
    private String message;

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

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

二、自定义异常处理器

注意:该类一定要实现HandlerExceptionResolver接口,并且覆盖重写接口的resolveException方法;

package cn.gpxxg.exception;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SysExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        SysException sys = null;
        if (e instanceof SysException)
        {
            sys = (SysException) e;
        }
        else
        {
            sys = new SysException("系统维护中...");
        }

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message", sys.getMessage());
        modelAndView.setViewName("error");
        return modelAndView;
    }
}

三、配置异常处理器

注意:很简单,就是在springmvc的配置文件中,使用bean标签注入,注入后,异常处理器才会起作用

<!--配置异常处理器-->
<bean id="sysExceptionResolver" class="cn.gpxxg.exception.SysExceptionResolver"></bean>

四、演示代码

package cn.gpxxg.controller;

import cn.gpxxg.exception.SysException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/testException")
public class TestException {
    @RequestMapping("/exception1")
    public String exception1 () throws SysException
    {
        System.out.println("test1执行了");

        try {
            int i = 1/0;
        } catch (Exception e) {
            // 在控制台打印错误信息
            e.printStackTrace();

            throw new SysException("出现异常,请重试");
        }

        return "success";
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC框架提供了强大的异常处理机制,可以帮助开发者处理应用程序中的各种异常。具体实现方式如下: 1. 使用@ControllerAdvice注解实现全局异常处理 可以在@ControllerAdvice注解标注的类中实现全局异常处理,对应的异常处理方法需要使用@ExceptionHandler注解标注。例如,下面的代码实现了对所有RuntimeException异常的全局处理: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(RuntimeException.class) public ModelAndView handleRuntimeException(HttpServletRequest request, RuntimeException ex) { ModelAndView mav = new ModelAndView(); mav.addObject("exception", ex); mav.addObject("url", request.getRequestURL()); mav.setViewName("error"); return mav; } } ``` 2. 在@Controller注解标注的类中实现局部异常处理 也可以在@Controller注解标注的类中实现局部异常处理,对应的异常处理方法也需要使用@ExceptionHandler注解标注。例如,下面的代码实现了对所有NumberFormatException异常的局部处理: ```java @Controller @RequestMapping("/user") public class UserController { @ExceptionHandler(NumberFormatException.class) public ModelAndView handleNumberFormatException(HttpServletRequest request, NumberFormatException ex) { ModelAndView mav = new ModelAndView(); mav.addObject("exception", ex); mav.addObject("url", request.getRequestURL()); mav.setViewName("error"); return mav; } @RequestMapping("/add") public String addUser(@RequestParam("id") int id) { // do something return "success"; } } ``` 3. 使用SimpleMappingExceptionResolver实现异常处理 还可以使用SimpleMappingExceptionResolver类实现异常处理,该类可以根据异常类型和异常映射表将异常转化为对应的视图。例如,下面的代码实现了对所有RuntimeException异常的处理: ```java <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.RuntimeException">error</prop> </props> </property> </bean> ``` 总之,SpringMVC框架提供了多种方式来实现异常处理,开发者可以根据实际需求选择合适的方式来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值