@ResponseBody
@ControllerAdvice
public class Advice {
@ExceptionHandler(Exception.class)
public WrappedResult handleException(Exception e, HttpServletRequest request) {
e.printStackTrace();
if (e instanceof ApplicationException) {//自定义异常处理,返回异常信息
//WrappedResult.failedWrappedResult();自己封装的返回类
return WrappedResult.failedWrappedResult(e.getMessage());
} else if (e instanceof MethodArgumentNotValidException) {//@Valid注解拦截的异常
List<ObjectError> allErrors = ((MethodArgumentNotValidException) e).getBindingResult().getAllErrors();
String msg = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
return WrappedResult.failedWrappedResult(msg);
} else {//其他异常
return WrappedResult.failedWrappedResult("系统异常!");
}
}
public static String getExceptionDetail(Exception ex) {
String ret = "";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream pout = new PrintStream(out);
ex.printStackTrace(pout);
ret = new String(out.toByteArray());
pout.close();
out.close();
} catch (Exception e) {
}
return ret.substring(0, ret.length() > 2000 ? 2000 : ret.length());
}
}
springboot 全局异常处理
最新推荐文章于 2024-06-03 17:29:15 发布