异常堆栈转为String以及运行时获取调用栈

编程入门 行业动态 更新时间:2024-10-11 21:26:32

异常<a href=https://www.elefans.com/category/jswz/34/1771218.html style=堆栈转为String以及运行时获取调用栈"/>

异常堆栈转为String以及运行时获取调用栈

纯Java实现

public class ExceptionUtils {public static String getStackTrace(Exception e) {StringWriter sw = new StringWriter();PrintWriter pw = new PrintWriter(sw);e.printStackTrace(pw);pw.close();try {sw.close();} catch (IOException e1) {//ignore}return sw.toString();}
}

依赖commons-lang3实现

String stacktrace = ExceptionUtils.getStacktrace(e);

通过异常打印出当前调用栈

ExceptionUtils.getStacktrace(new Throwable());

Java 9的StackWalker

Java 9中提供了StackWalker灵活的获取调用栈并做一些简单的过滤

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class StackWalkerUtil {public static List<StackWalker.StackFrame> getCurrentCallStack() {return StackWalker.getInstance().walk(StackWalkerUtil::walkExample);}private static List<StackWalker.StackFrame> walkExample(Stream<StackWalker.StackFrame> stackFrameStream) {return stackFrameStream.collect(Collectors.toList());}public static void method1() {getCurrentCallStack().stream().filter(frame -> frame.getClassName().contains("StackWalkerUtil") && frame.getClassName().endsWith("Util")).forEach(stackFrame -> System.out.println(stackFrame.toString()));}public static void method2() {method1();}public static void method3() {method2();}public static void method4() {method3();}public static void main(String[] args) {method4();}
}

输出是:

StackWalkerUtil.getCurrentCallStack(StackWalkerUtil.java:9)
StackWalkerUtil.method1(StackWalkerUtil.java:17)
StackWalkerUtil.method2(StackWalkerUtil.java:22)
StackWalkerUtil.method3(StackWalkerUtil.java:26)
StackWalkerUtil.method4(StackWalkerUtil.java:30)
StackWalkerUtil.main(StackWalkerUtil.java:34)

更多推荐

异常堆栈转为String以及运行时获取调用栈

本文发布于:2024-02-13 16:44:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:堆栈   异常   String

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!