3-Spring Boot ( 全局捕获异常 与 自定义异常 )

全局捕获异常

1.首先定义一个捕获异常的类

相关的注解说明我已经写在注释里面了

/**
 * Created by lizhen on 2018/2/6.
 * ControllerAdvice 注解 全局捕获异常的类
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 全局捕获异常
     * ExceptionHandler 表示要拦截那些异常,这个例子测试的是捕获运行时的异常
     * @param ex
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Map<String, Object> result(Exception ex) {
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("errorcode", "500");
        //此处可以将异常捕获,并将捕获的信息打印出来
        result.put("errorMsg", ex.getMessage());
        return result;
    }

2.创造一个运行时的异常,在浏览器中查看效果

/**
 * RestController 注解表示改接口返回的都是json格式的
 * EnableAutoConfiguration 帮你注入spring容器,并启动tomcat容器
 */

@RestController
public class HelloWordController {
    private static Logger log = Logger.getLogger(HelloWordController.class);
    @Autowired
    private Userservice userservice;

    /**
     * 全局捕获异常
     *
     * @return
     */
    @RequestMapping("/HelloWordController")
    public String index() {
        /**
         * 加入这两行代码是为了测试全局捕获异常
         */
        List list = new ArrayList();
        list.get(10);
        return "success";
    }

3.浏览器中输入网址,查看效果


自定义异常的使用

1.创建一个自定义异常的类

/**
 * 自定义异常类
 * Created by lizhen on 2018/2/8.
 */
public class BusinessException extends RuntimeException {
    /**
     * 状态码
     */
    private String code;
    /**
     * 异常信息
     */
    private String msg;

    /**
     * 构造函数
     */
    public BusinessException(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    @Override
    public String toString() {
        return "BusinessException{" +
                "code='" + code + '\'' +
                ", msg='" + msg + '\'' +
                '}';
    }
}

2.自定义异常

/**
 * 使用自定义异常
 * @param businessException
 * @return
 */
@ResponseBody
@ExceptionHandler(BusinessException.class)
public Map<String ,String> getException(BusinessException businessException){
    Map map =new HashMap();
    map.put("code",businessException.getCode());
    map.put("Msg",businessException.getMsg());
    return map;
}

3.自定义异常的使用

/**
 * 测试自定义异常
 */
@RequestMapping("/testBusinessException")
public void testBusinessException() {
    throw new BusinessException("562", "我要使大招了!!!请接招!!!!");
}

4.查看自定义异常效果



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值