//package com.sunxung.factoring.component.exception;
//
//import javax.servlet.http.HttpServletRequest;
//
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.autoconfigure.web.ErrorAttributes;
//import org.springframework.boot.autoconfigure.web.ErrorController;
//import org.springframework.http.HttpStatus;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.ControllerAdvice;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.ResponseStatus;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import com.sunxung.factoring.ApplicationRun;
//
///**
// * 统一异常处理
// */
//@ControllerAdvice
//@Controller
//public class ExceptionController implements ErrorController {
//
//    private static Logger log = LogManager.getLogger(ApplicationRun.class);
//    private static final String ERROR_PATH = "/error";
//    @Autowired
//    private ErrorAttributes errorAttributes;
//
//    @Override
//    public String getErrorPath() {
//        return ERROR_PATH;
//    }
//
//    /**
//     * 捕获路径错误异常
//     */
//    @RequestMapping(ERROR_PATH)
//    // @ResponseBody
//    @ResponseStatus(HttpStatus.FORBIDDEN)
//    public Object error(HttpServletRequest request, Model model) {
//        log.error(errorAttributes.getErrorAttributes(new ServletRequestAttributes(request), false));
//        // return new ResponseJson(CodeUtil.FAIL, "服务器内部错误");
//        return "sys/404";
//    }
//
//    /**
//     * 捕获未被处理的异常
//     */
//    @ExceptionHandler(Throwable.class)
//    @ResponseStatus(HttpStatus.FORBIDDEN)
//    // @ResponseBody
//    public Object handleException(Exception e, Model model) {
//        log.error("出现错误：", e);
//        // return new ResponseJson(CodeUtil.FAIL, "服务器内部错误");
//        return "sys/500";
//    }
//
//    /**
//     * 捕获数据验证异常
//     */
//    @ExceptionHandler(ValidatorException.class)
//    @ResponseBody
//    public Object handleException(ValidatorException e, Model model) {
//        return e.getResponseJson();
//    }
//
//    /**
//     * 捕获业务异常
//     */
//    @ExceptionHandler(BusinessException.class)
//    @ResponseBody
//    public Object handleException(BusinessException e, Model model) {
//        return e.getResponseJson();
//    }
//}
