"
当把异常作为常量时,打印的异常调用链不对
异常类
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行的代码,但是却显示了第一次打印的异常调用链。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
"
一般提醒内容作为字符串常量
public final static String ENTITY_NOT_EXIST = "对象不存在";  
打印的时候,作为参数传进去
log.error("error : 10", new UserException(TipExceptionConstants.ENTITY_NOT_EXIST));######
已经做成常量了,stack trace初始化的时候是什么以后就是什么了
" 