public class MyException extends RuntimeException{
private boolean notPrintStackTrace;
public boolean isNotPrintStackTrace() {
return notPrintStackTrace;
}
public MyException() {
}
public MyException toNotPrintStackTrace() {
notPrintStackTrace = true;
return this;
}
public MyException(String message) {
super(message);
}
}
调用处
@Slf4j
@Service
public class MyExceptionService {
public void test () {
try {
int i=1/0;
} catch (Exception e) {
System.out.println("#########异常信息");
log.info("异常信息:{}", e.getMessage());
throw new MyException("业务异常---").toNotPrintStackTrace();
}
}
public void tes2 () {
try {
int i=1/0;
} catch (Exception e) {
System.out.println("#########异常信息");
log.info("异常信息:{}", e.getMessage());
throw new MyException("业务异常---");
}
}
}
最外层
@GetMapping("/test/log2")
public String testLog2(){
try {
myExceptionService.tes2();
} catch (MyException e) {
if (e.isNotPrintStackTrace()) {
log.error("最外层捕获:{}", e.getMessage());
} else {
log.error("最外层捕获:", e);
}
}
catch (Exception e) {
log.error("最外层捕获:", e);
}
return "testLog";
}
springboot之业务异常堆栈信息优化: 过滤打印部分堆栈
https://www.jianshu.com/p/5ce8c29535c1