重构获取异常栈信息--printStackTrace
来源:互联网 发布:网络语打卡的意思 编辑:程序博客网 时间:2024/06/05 16:12
MyStackTrace:
/** * * @author wumingkun * @version 1.0.0 * @Description */package com.demo.stacktrace;import java.io.PrintStream;/** * @author wumingkun * */public class MyStackTrace {public static String getStackTrace(Throwable errors) {StringBuffer result = new StringBuffer();result.append(errors);StackTraceElement[] trace = errors.getStackTrace();for (int i = 0; i < trace.length; i++)result.append("\n\tat " + trace[i]); Throwable ourCause = errors.getCause(); if (ourCause != null) result.append(getStackTraceAsCause(ourCause, trace));return result.toString();}private static String getStackTraceAsCause(Throwable ourCause,StackTraceElement[] causedTrace) {StringBuffer result=new StringBuffer();StackTraceElement[] trace = ourCause.getStackTrace();int m = trace.length - 1, n = causedTrace.length - 1;while (m >= 0 && n >= 0 && trace[m].equals(causedTrace[n])) {m--;n--;}int framesInCommon = trace.length - 1 - m;result.append("\nCaused by: " + ourCause);for (int i = 0; i <= m; i++)result.append("\n\tat " + trace[i]);if (framesInCommon != 0)result.append("\n\t... " + framesInCommon + " more");Throwable tempCause = ourCause.getCause();if (tempCause != null)result.append(getStackTraceAsCause(tempCause, trace));return result.toString();}}
StackTraceTest:
/** * * @author wumingkun * @version 1.0.0 * @Description */package com.demo.stacktrace;/** * @author wumingkun * */public class StackTraceTest {/** * @param args */public static void main(String[] args) {try {m1();} catch (Exception e) {System.out.println(MyStackTrace.getStackTrace(e));//直接返回异常栈信息字符串}}/** * */private static void m1() {StringBuffer sb=null;try {sb.append("aa");} catch (Exception e) {throw new RuntimeException(e);}}}
0 0
- 重构获取异常栈信息--printStackTrace
- java 异常printStackTrace
- JAVA Catch中异常信息的输出 System.out.println(e) e.printStackTrace()
- 异常类的printStackTrace()方法
- Java 输出 printStackTrace 堆栈信息
- 异常信息获取观察
- java 获取异常信息
- java 获取e.printStackTrace() 的具体信息,赋值给String 变量 并返回
- printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因
- .printStackTrace
- printStackTrace
- 获取异常的字符串信息
- 得到java异常printStackTrace的详细信息
- 得到java异常printStackTrace的详细信息
- java异常分析;剖析printStackTrace和fillInStackTrace
- java异常分析;剖析printStackTrace和fillInStackTrace
- 异常抛出e.printStackTrace();工作原理
- 得到java异常printStackTrace的详细信息
- Json简介
- Linux驱动学习——中断、定时器
- jz2440 的中断中的底半部机制
- hdu hdu-2111-Saving HDU
- 【BFS】uva11624Fire!
- 重构获取异常栈信息--printStackTrace
- C语言之动态内存分布
- UVA1508-Equipment(状态压缩+暴力枚举)
- UVa11478 - Halum(差分约束)
- contos安装lnmp
- Qt Quick 中QMessageBox Class的使用学习笔记
- Java命名和目录接口——JNDI
- C语言之函数
- Leetcode--Recover Binary Search Tree