问题描述
当把异常作为常量时,打印的异常调用链不对
相关代码
异常类
public class UserException extends RuntimeException {
private static final long serialVersionUID = -1932290828991021225L;
private State state;
public UserException() {
this.state = StateCode.SERVER_ERROR;
}
public UserException(String tip) {
this.state = new State(StateCode.SERVER_ERROR.getCode(), tip);
}
public UserException(int errCode, String tip) {
this.state = new State(errCode, tip);
}
public UserException(State state) {
this.state = state;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
异常常量类
public interface TipExceptionConstants {
TipException ENTITY_NOT_EXIST = new TipException("对象不存在");
TipException NEED_LOGIN = new TipException("请用户登录");
}
测试类
@Slf4j
public class TestException {
public static void main(String[] args){
log.error("error : 10", TipExceptionConstants.ENTITY_NOT_EXIST);
log.info("------------------------");
log.info("------------------------");
log.error("error : 13", TipExceptionConstants.NEED_LOGIN);
log.info("------------------------");
}
}
打印出来的log
cn.test.exception.TipException: null
at cn.test.exception.TipExceptionConstants.<clinit>(TipExceptionConstants.java:11)
at test.TestException.main(TestException.java:10)
17:02:45.249 [main] INFO test.TestException - ------------------------
17:02:45.249 [main] INFO test.TestException - ------------------------
17:02:45.249 [main] ERROR test.TestException - error : 13
cn.test.exception.TipException: null
at cn.test.exception.TipExceptionConstants.<clinit>(TipExceptionConstants.java:12)
at test.TestException.main(TestException.java:10)
17:02:45.249 [main] INFO test.TestException - ------------------------
你期待的结果是什么?实际看到的错误信息又是什么?
打印出来的堆栈调用链不对,两次调用链都是
at test.TestException.main(TestException.java:10)
第二个打印的异常log的调用链应该是第13行的代码,但是却显示了第一次打印的异常调用链。
一般提醒内容作为字符串常量
打印的时候,作为参数传进去