gpt4 book ai didi

android - 如何获取使用 Thread.UncaughtExceptionHandler 引发异常的行号?

转载 作者:IT王子 更新时间:2023-10-28 23:35:49 27 4
gpt4 key购买 nike

当我使用 try-catch block 捕获异常时,我可以通过调用 e.getStackTrace() 获取引发异常的行号。

像这样:

java.lang.NumberFormatException: Invalid int: "abc"    
java.lang.Integer.invalidInt(Integer.java:138)
java.lang.Integer.parse(Integer.java:375)
java.lang.Integer.parseInt(Integer.java:366)
java.lang.Integer.parseInt(Integer.java:332)
com.example.getarea.MainActivity.onCreate(MainActivity.java:42)
android.app.Activity.performCreate(Activity.java:5066)
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
android.app.ActivityThread.access$600(ActivityThread.java:151)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:155)
android.app.ActivityThread.main(ActivityThread.java:5536)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
dalvik.system.NativeStart.main(Native Method)

但是当我使用 Thread.UncaughtExceptionHandler 时,调用 e.getStackTrace() 会给我这个:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.getarea/com.example.getarea.MainActivity}: java.lang.NumberFormatException: Invalid int: "abc"    
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
android.app.ActivityThread.access$600(ActivityThread.java:151)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:155)
android.app.ActivityThread.main(ActivityThread.java:5536)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
dalvik.system.NativeStart.main(Native Method)

如何使用 Thread.UncaughtExceptionHandler 获取引发异常的行号?

最佳答案

试试

e.getStackTrace()[0].getLineNumber();

堆栈跟踪中的第一个元素是最近调用的方法(调用堆栈的顶部)。

还有获取类、方法和文件名的方法。

如果您在 UncaughtExceptionHandler 中获得的 e 对您不起作用(因为它包装了真正的异常),您可以尝试 e.getCause() 并查看在那个堆栈跟踪。

关于android - 如何获取使用 Thread.UncaughtExceptionHandler 引发异常的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903831/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com