Javaグローバル例外取得


1.戻りクラスの定義
package com.eternalray.common;

import lombok.Data;

/**
 * @Author: Eternalray
 *          
 */
@Data
public class Result {
    /**
     *  success            true   false
     */
    private boolean success;
    /**
     *  data        
     */
    private T data;

    public static  Result set(boolean success,T data){
        Result result=new Result<>();
        result.setSuccess(success);
        result.setData(data);
        return  result;
    }
}

2.例外クラスの定義
package com.eternalray.conf;

import com.eternalray.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.lang.reflect.UndeclaredThrowableException;

/**
 *         
 * @author EternalRay
 */
@ControllerAdvice
@ResponseBody
@Slf4j
public class GlobalExceptionHandleConf {

    /**
     *       
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public Object handlerException(Exception e){
        //annotation     
        if(e instanceof UndeclaredThrowableException) {
            e = (Exception) ((UndeclaredThrowableException)e).getUndeclaredThrowable();
        }
        log.error("[handleException]: ",e);
        return Result.set(false,e.getMessage());
    }
}