加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java获取异常堆栈信息

发布时间:2020-12-15 05:35:43 所属栏目:Java 来源:网络整理
导读:/* * 只能获取单层异常信息 无法获取caused by * */ public String getExceptionStack(Throwable e){ StackTraceElement[] stackTraceElements = e.getStackTrace(); String prefix = "Exception in thread "+"""+Thread.currentThread().getName()+"" " ;
    /*
    * 只能获取单层异常信息 无法获取caused by
    * */
    public String getExceptionStack(Throwable e){

        StackTraceElement[] stackTraceElements = e.getStackTrace();
        String prefix = "Exception in thread "+"""+Thread.currentThread().getName()+"" ";
        String result = prefix+e.toString() + "n";
        int lenth = stackTraceElements.length - 1;
        for (int i = 0;i<=lenth;i++){
            String err = stackTraceElements[i].getClassName()+"."+stackTraceElements[i].getMethodName()+"("+stackTraceElements[i].getFileName()+"."+stackTraceElements[i].getLineNumber()+")";
            result = result + "tat "+err+"n";

        }
        
        return result;
    }

?

 /*
    * 获取Caused by  参数num要初始化为0 参数hashset要为空hashset
    * */
    public String getExceptionStack(Throwable e,HashSet<String> set,int num){

        StackTraceElement[] stackTraceElements = e.getStackTrace();
        String prefix = "";
        if (num == 0){
            prefix = "Exception in thread "+"""+Thread.currentThread().getName()+"" ";
        } else {
            prefix = "Caused by: ";
        }
        String result = prefix+e.toString() + "n";
        int lenth = stackTraceElements.length - 1;
        for (int i = 0;i<=lenth;i++){
            String err = stackTraceElements[i].getClassName()+"."+stackTraceElements[i].getMethodName()+"("+stackTraceElements[i].getFileName()+"."+stackTraceElements[i].getLineNumber()+")";
            if (set.contains(err)){
                continue;
            }
            set.add(err);
            result = result + "tat "+err+"n";

        }

        Throwable t = e.getCause();

        String cause = "";
        if (t!=null){
            num++;
            cause = getExceptionStack(t,set,num);
        }
        
        return result + cause;
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读