获取堆栈跟踪唯一编号

时间:2018-03-02 17:17:55

标签: java

是否有办法为某些异常后出现的每个Java堆栈跟踪分配唯一ID?我想获取该号码并将其用于更快的故障排除。

1 个答案:

答案 0 :(得分:2)

为什么不创建自定义Exception并散列堆栈跟踪并将其设置为唯一ID?

import org.apache.commons.lang.exception.ExceptionUtils;

public class MyException extends Exception {
    private static final long serialVersionUID = -2145930259049207199L;

    private final int uniqueId;

    public MyException(String message) {
        super(message);
        this.uniqueId = ExceptionUtils.getStackTrace(this).hashCode();
    }

    public int getUniqueId() {
        return uniqueId;
    }

}

如果你想为每条消息提供一个真正唯一的id(即你没有尝试跟踪重复的exeption消息),你可以在构造函数中相应地设置uniqueId:

this.uniqueId = UUID.randomUUID().toString();