zoukankan      html  css  js  c++  java
  • Java获取异常堆栈信息

        /*
        * 只能获取单层异常信息 无法获取caused by
        * */
        public String getExceptionStack(Throwable e){
    
            StackTraceElement[] stackTraceElements = e.getStackTrace();
            String prefix = "Exception in thread "+"""+Thread.currentThread().getName()+"" ";
            String result = prefix+e.toString() + "
    ";
            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 + "	at "+err+"
    ";
    
            }
            
            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() + "
    ";
            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 + "	at "+err+"
    ";
    
            }
    
            Throwable t = e.getCause();
    
            String cause = "";
            if (t!=null){
                num++;
                cause = getExceptionStack(t,set,num);
            }
            
            return result + cause;
        }
  • 相关阅读:
    poj2352树状数组解决偏序问题
    Python中的输入(input)和输出打印
    Python中的输入(input)和输出打印
    IP协议
    IP协议
    Python中的可迭代Iterable和迭代器Iterator
    Python中的可迭代Iterable和迭代器Iterator
    Python中的变量和数据类型
    Python中的变量和数据类型
    TCP的三次握手和四次挥手和UDP协议
  • 原文地址:https://www.cnblogs.com/scorates/p/11253540.html
Copyright © 2011-2022 走看看