056 集中统一处理异常

1.spring.xml中配置文件

 2.jsp->dosome.do

3.controller处理请求(如果不正确则抛出异常)

 

 3.创建三个异常类

MyUserException

package com.bjpowernode.Exception;

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

    public MyUserException(String message) {
        super(message);
    }
}
NameException
package com.bjpowernode.Exception;

//当用户的姓名异常抛出NameException
public class NameException extends MyUserException{
    public NameException() {
        super();
    }

    public NameException(String message) {
        super(message);
    }
}
AgeException
package com.bjpowernode.Exception;

import com.bjpowernode.Exception.MyUserException;

public class AgeException extends MyUserException {


    public AgeException() {
        super();
    }

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

创建重写各自的构造方法

4.创建处理异常的类(可以理解为异常本身的控制类

因为它其实就是controller的加强)

package com.bjpowernode.Handler;

import com.bjpowernode.Exception.AgeException;
import com.bjpowernode.Exception.NameException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value = NameException.class)
    public ModelAndView doNameExceptionHandler(Exception e){
//        处理NameException异常
        /*
        处理逻辑:
        1、需要把异常记录下来,记录到数据库文件,日志文件
        记录日志发生的事件、哪个方法发生的、异常错误内容
        2、发送通知
        把异常的信息通过邮件,短信,微信发送给相关人员
        3、给用户友好的提示
         */
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","姓名必须是zs,其他的不能访问");
        mv.addObject("ex",e);
        mv.setViewName("namErroe");
        return mv;
    }
    @ExceptionHandler(value = AgeException.class)
    public ModelAndView doAgeExceptionHandler(Exception e){
//        处理AgeException异常
        /*
        处理逻辑:
        1、需要把异常记录下来,记录到数据库文件,日志文件
        记录日志发生的事件、哪个方法发生的、异常错误内容
        2、发送通知
        把异常的信息通过邮件,短信,微信发送给相关人员
        3、给用户友好的提示
         */
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","年龄不能为空且不能大于80");
        mv.addObject("ex",e);
        mv.setViewName("ageErroe");
        return mv;
    }
//    处理其他异常
    @ExceptionHandler
    public ModelAndView doOtherExceptionHandler(Exception e){

        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","doOtherExceptionHandler...其他异常处理");
        mv.addObject("ex",e);
        mv.setViewName("defaultErroe");
        return mv;
    }
}

 @ControolerAdvice

@ExceptionHandler

两个注解

运行测试:

姓名异常

 !name.equals("zs" 

 

年龄异常

if(age==null ||age >80)

 

 其他异常

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值