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;
        }
  • 相关阅读:
    【转】QT QTableWidget 用法总结
    【转】OpenGL光照处理
    VTK 使用笔记
    【转】toggled 和 trigger 的区别
    白噪声 高斯白噪声
    离线 截图
    【转】 什么是句柄?为什么会有句柄?HANDLE
    VS 常用快捷键 整理
    【转】OpenCV 编程入门
    "This qt version uses an unsupported makefile generator (used: ,supported: MSVC.NET, MSBUILD)"
  • 原文地址:https://www.cnblogs.com/scorates/p/11253540.html
Copyright © 2011-2022 走看看