浅析java异常栈
我们给大家通过实例代码分析了java异常栈的函数用法并在下面给大家整理了Java获取异常堆栈信息的两种方法,以下是全部内容:
(stacktrace)异常栈轨迹是指:
当throwThrowable时,Throwable对象抛出过程(穿梭)所经历的多个方法调用层(方法调用栈)。越接近throw语句的方法先进入异常栈。
(ThrowableCausalChain)异常原因链:
在Throwable类中的cause属性,表示被当前异常包装的原始异常。(可以称为异常原因)
在打印异常栈轨迹时,会递归打印原始异常的异常栈。
现在来分析一下Throwable.printStackTrace()方法。
在Throwable.printStackTrace(PrintStreamOrWriters)内部,我们可以看到:
在打印异常栈时,是先打印当前异常对象this的异常栈。
然后再打印异常原因链。(递归打印原始异常的异常栈)
synchronized(s.lock()){
//Printourstacktrace
//1.先打印当前异常对象this的异常栈。
s.println(this);
StackTraceElement[]trace=getOurStackTrace();
for(StackTraceElementtraceElement:trace)
s.println("\tat"+traceElement);
//Printsuppressedexceptions,ifany
for(Throwablese:getSuppressed())
se.printEnclosedStackTrace(s,trace,SUPPRESSED_CAPTION,"\t",dejaVu);
//Printcause,ifany
//2.打印异常原因链
ThrowableourCause=getCause();
if(ourCause!=null)
ourCause.printEnclosedStackTrace(s,trace,CAUSE_CAPTION,"",dejaVu);
}
Java获取异常堆栈信息
方法一:
publicstaticStringgetStackTrace(Throwablet){
StringWritersw=newStringWriter();
PrintWriterpw=newPrintWriter(sw);
try{
t.printStackTrace(pw);
returnsw.toString();
}finally{
pw.close();
}
}
方法二:
org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e);
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短