@ControllerAdvice
public class PoliceGlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public String errorResult(HttpServletRequest request, Exception ex) throws UnknownHostException {
// 采用全局捕获异常 拦截系统中的错误,返回友好的提示给客户端
Map<String, String[]> parameterMap = request.getParameterMap();
StackTraceElement[] stackTrace = ex.getStackTrace();
StackTraceElement stackTraceElement = stackTrace[0];
// 转换成json
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(stackTraceElement));
// 新增参数内容
jsonObject.put("parameterContent", parameterMap);
// 新增错误日志
jsonObject.put("errorContent", ex.getMessage());
jsonObject.put("createTime", new Date());
// 获取我们的ip
jsonObject.put("serverIp", getServerAddres());
// 投递到kafka中 & 用微信公众号模板消息将错误信息发送给开发者快速定位错误
return "系统错误";
}
private String getServerAddres() throws UnknownHostException {
InetAddress ip4 = Inet4Address.getLocalHost();
return ip4.getHostAddress();
}
}
ex.getStackTrace() 此方法错误信息,方法名字,报错行数等等一系列报错信息全部可以获取到