当 Handler 启动 Runnable 时包含来自原始线程的方法调用引发异常



我正在调用post()方法:

void post() {
new Handler().post(() -> {
throw new RuntimeException("Something went wrong...");
});
}

我正在获得堆栈跟踪:

java.lang.RuntimeException: Something went wrong...
at com.package.MyApp.lambda$post$0(MyApp.java:39)
at com.package.MyApp$$Lambda$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

是否可以在堆栈跟踪中包含方法post()的调用方?

换句话说,假设我调用foo(),它调用bar(),最后调用post()

void foo() { bar(); }
void bar() { post(); }

我要实现的是获取堆栈跟踪,其中包含有关foobarpost的信息。

您可以使用Thread.currentThread().getStackTrace()来了解当前线程的堆栈跟踪元素。

最新更新