package cn.sayyoo.payserver.exception;
import cn.sayyoo.core.base.BaseException;
import cn.sayyoo.core.base.Result;
import cn.sayyoo.core.constant.ResultCode;
import cn.sayyoo.core.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常处理类
*
* @author yedeguo
*/
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
/**
* 处理全部的异常的实现
*
* @param exception
* @return
* @throws Exception
*/
private Result dealException(Exception exception) throws Exception {
LOGGER.error("===============**出现异常啦出现异常啦! 出现异常啦出现异常啦!**================");
LOGGER.error("===============**开始处理异常**================");
exception.printStackTrace();
Result result = new Result<>();
if (exception instanceof BaseException) {
BaseException baseException = (BaseException) exception;
int code = baseException.getCode();
if (code == 0) {
code = ResultCode.ERROR_UNKNOW.getCode();
}
String message = baseException.getMessage();
if (StringUtil.isBlank(message)) {
message = ResultCode.ERROR_UNKNOW.getMessage();
}
result.setCode(code);
result.setMessage(message);
} else {
result.setCode(ResultCode.SYS_ERROR.getCode());
result.setMessage(exception.getMessage());
}
LOGGER.error("===============**异常处理完毕**================");
LOGGER.error("===============**出现异常啦出现异常啦! 出现异常啦出现异常啦!**================");
return result;
}
/**
* 所有异常报错
*
* @param exception
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class)
public Result allExceptionHandler(Exception exception) throws Exception {
Result result = null;
try {
result = dealException(exception);
} catch (Exception e) {
LOGGER.error("出现了意料之外的异常,而且这个异常没有被正确的处理");
e.printStackTrace();
}
//如果出现意料之外的错误,那么直接返回系统错误
if (result == null) {
result = Result.error();
result.setMessage(ResultCode.SYS_ERROR.getMessage());
}
return result;
}
}
一个简单的全局异常处理类
最新推荐文章于 2024-08-15 08:00:00 发布