spring全局异常处理

之前使用过springboot,里面有个全局异常处理,一开始以为是springboot才有的,最近做项目才发现,spring也可以,只需要声明一下就行了
涉及到的注解
ControllerAdvice 写在类上,声明这个类是全局异常处理类
RestControllerAdvice 跟ControllerAdvice 一样,查看源码得到
spring全局异常处理_第1张图片

@ControllerAdvice
@ResponseBody

我的理解是捕捉异常以json方式返回(当然不只是json)反正不是视图
还有要处理那个异常,要用到注解,一般用在方法上
@ExceptionHandler
里面可以填写要处理那个异常,比如说我要处理Exception异常,就
就直接 **@ExceptionHandler(Exception.class)**就行了,下面贴具体代码,那个方法里面参数在调用的时候会自动传入相应的异常,这是我们就可以直接获取到异常相响应的信息了

package com.zhizhuo.exceptions.handle;

import com.zhizhuo.exceptions.ServiceException;
import com.zhizhuo.util.HttpResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理
 */
@RestControllerAdvice
public class GlobalExceptionHandle {

    /**
     * 默认异常处理
     * @param ex
     * @return
     */
    @ExceptionHandler(Exception.class)
    public HttpResult handleException(Exception ex){
        return new HttpResult().fail().msg("系统错误");
    }

    /**
     * 处理服务异常
     * @param ex
     * @return
     */
    @ExceptionHandler(ServiceException.class)
    public HttpResult handleException(ServiceException ex){
        return new HttpResult().fail().msg(ex.getMessage());
    }
}

当然springboot可以直接扫描到
用spring的话,用component-scan去扫描,或者在xml定义,不然会无效哦

你可能感兴趣的:(spring,javaweb)