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;
        }
  • 相关阅读:
    datetime格式化 c#
    Cookie aps.net
    缓存页面 asp.net
    aps.net IIS 部署 显示404.3错误
    使用systemd管理进程,设置进程自动启动
    VS Code 生成Pack、在Nuget中添加包、在项目中添加包
    dotnet命令 new
    WPF ListView渲染性能优化
    SQL Server判断语句(IF ELSE/CASE WHEN )
    T-SQL脚本附加数据库
  • 原文地址:https://www.cnblogs.com/scorates/p/11253540.html
Copyright © 2011-2022 走看看