微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC异常处理

步骤

  1. 新建一个自定义异常类UserException,再定义它的子类NameException和AgeException.
public class AgeException extends UserException{
    public AgeException() {
    }

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

public class NameException extends UserException{
    public NameException() {
    }

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

public class UserException extends Exception{
    public UserException() {
    }

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

  1. 再controller中抛出NameException,AgeException。
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/some")
    public ModelAndView doSome(String name,Integer age) throws UserException {
        ModelAndView modelAndView = new ModelAndView();
        if(!name.equals("黄振聪")){
            throw new NameException("用户:"+name+"不是黄振聪!");
        }
        if(age == null || age > 100){
            throw new AgeException("年龄不符合要求!");
        }
        modelAndView.addobject("uname",name);
        modelAndView.addobject("uage",age);
        modelAndView.setViewName("target");
        return modelAndView;
    }
}
  1. 创建一个普通类,作为全局异常处理类。并在类的上面加上@ControllerAdvice,在类中定义方法方法上面加入@ExceptionHandler.
@ControllerAdvice
public class UserExceptionHandler {
    /**
     @ExceptionHandler: 
        属性:
            value:指定异常类,若没有指定则表示其他所有异常
     */
    @ExceptionHandler(value = NameException.class)
    public ModelAndView nameException(Exception ex){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addobject("tips","处理NameException");
        modelAndView.addobject("ex",ex);
        modelAndView.setViewName("nameError");
        return modelAndView;
    }
    @ExceptionHandler(value = AgeException.class)
    public ModelAndView ageException(Exception ex){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addobject("tips","处理AgeException");
        modelAndView.addobject("ex",ex);
        modelAndView.setViewName("ageError");
        return modelAndView;
    }
    @ExceptionHandler
    public ModelAndView otherException(Exception ex){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addobject("ex",ex);
        modelAndView.setViewName("otherError");
        return modelAndView;
    }
}
  1. 创建处理异常的视图界面。
  2. 在SpringMVC配置文件添加:组件扫描器,扫描@Controller注解和@ControllerAdvice所在的包名;声明注解驱动。
    <context:component-scan base-package="com.hzc.controller" />
    <context:component-scan base-package="com.hzc.handler" />
    <mvc:annotation-driven />

结构图:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐