SpringMVC自定义异常处理

SpringMVC自定义异常跳转类

思路解析

框架使用的是集中的异常处理。 把各个Controller中抛出的异常集中到一个地方处理。 处理异常的叫做异常处理器。

框架中使用两个注解完成异常的集中处理。 这样每个controller不用单独处理异常了。注解是:

1)@ExceptionHandler : 放在方法的上面,表示此方法可以处理某个类型的异常。 当异常发生时,执行这个方法。

  1. @ControllerAdvice: 放在类的上面, 表示这个类中有异常的处理方法。 相当于aop中的@Aspect.

​ @ControllerAdvice看做是 控制器增强, 就是给Controller类增加异常(切面)的处理功能.

带有@ControllerAdvice注解就表示这是一个异常处理器,处理器接收指定异常,执行操作方法。

实现步骤

首先要自定义一个异常类

public class NameException extends Exception{
    public NameException() {
        super();
    }

    public NameException(String message) {
        super(message);
    }
}

然后在创建一个异常处理器,用于捕获异常然后处理

/*
* @ControllerAdvice
* 标明这是一个异常处理器
* 抛出的异常会在这个类中寻找有没有相对应的处理方法
* */
@ControllerAdvice
public class StudentException {
/*
    * 指定捕获异常
    * @ExceptionHandler
    * value的值是要捕获的异常类
    * 只要是抛出的这个异常就会执行这个处理方法
    * */
    //这里的操作方法跟控制类的方法一样,返回数据到页面的操作也一样
    @ExceptionHandler(value = NameException.class)
    public ModelAndView  hj(Exception e){
        ModelAndView MV = new ModelAndView();

        MV.addObject("exception","名字错误");
        MV.setViewName("/Exception");

        return MV;

    }

}

异常处理器要交给容器管理,所有要在SpringMVC的配置文件中加载

<!--    扫描ExceptionController包下的处理类-->
<context:component-scan base-package="ling.ExceptionController"/>

异常跳转页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
警告:<br/>
错误:${exception}
</body>
</html>

最后一步就是在访问控制方法中使用这个异常处理就行

@Controller
public class StudentExceptionA {

@RequestMapping("/ling")
    public String inthh(Student user) throws NameException {

        if (user.getName() == null || user.getName() == ""){
            throw new NameException();
        }

        return user.toString();
    }
    

流程

@Controller —》 @RequestMapping("/ling") —》 throw new NameException() —》@ControllerAdvice —》 @ExceptionHandler(value = NameException.class) --》return MV;

如果前端传来的参数中name为空,就会抛出name异常,异常处理类就会捕获并执行处理方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC中,可以通过实现HandlerExceptionResolver接口来进行自定义异常处理。这个接口定义了一个resolveException()方法,当请求处理过程中出现异常时会被调用。通过实现这个方法,我们可以自定义异常处理的逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springmvc自定义异常处理](https://blog.csdn.net/Sunking_Yin/article/details/52744151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SpringMVC自定义异常处理](https://blog.csdn.net/A_jungle/article/details/82386793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ssm_异常处理](https://download.csdn.net/download/csdn_kenneth/10251825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值