java - 从堆栈跟踪输出中获取“logcat like”
问题描述
我正在尝试从 App 类中的错误对象中获取完整的异常日志“就像我们在 android studio 中一样”,更具体地说,这是我的 App.java
import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;
/**
* Created by informatic on 17/03/2018.
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
e.printStackTrace();
StringBuilder massage=new StringBuilder();
for (int i = 0; i < e.getStackTrace().length; i++) {
massage.append(e.getStackTrace()[i].toString());
}
String s=massage.toString();
System.out.print(s);
});
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在 NullPointerException 之后,这是 Strings
将在 Exception 之后包含的内容
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)android.app.ActivityThread.access$1100(ActivityThread.java:151)android.app.ActivityThread$H .handleMessage(ActivityThread.java:1362)android.os.Handler.dispatchMessage(Handler.java:110)android.os.Looper.loop(Looper.java:193)android.app.ActivityThread.main(ActivityThread.java:5551 )java.lang.reflect.Method.invokeNative(Native Method)java.lang.reflect.Method.invoke(Method.java:515)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730)dalvik.system.NativeStart.main(Native Method)
但另一方面,logcat 会打印这个
com.automata4.www.sanad E/AndroidRuntime:致命异常:主进程:com.automata4.www.sanad,PID:31429 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.automata4.www.sanad/com. automata4.www.sanad.frontend.activities.home.HomeActivity}:android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 的 java.lang.NullPointerException 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)在 android.app.ActivityThread.access$1100(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android .os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang。reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com. dalvik.system.NativeStart.main(Native Method) 处的 android.internal.os.ZygoteInit.main(ZygoteInit.java:730) 原因:com.automata4.www.sanad.frontend.activities.home 处的 java.lang.NullPointerException .HomeActivity.getAndSetUi(HomeActivity.java:48) 在 com.automata4.www.sanad.frontend.activities.home.HomeActivity.onCreate(HomeActivity.java:42) 在 android.app.Activity.performCreate(Activity.java:5310 ) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2381) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469) 在 android.app.ActivityThread.access$1100(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang。 reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com. dalvik.system.NativeStart.main(本机方法)上的 android.internal.os.ZygoteInit.main(ZygoteInit.java:730)handleLaunchActivity(ActivityThread.java:2469) 在 android.app.ActivityThread.access$1100(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 在 android.os.Handler.dispatchMessage( Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method)在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:730) 在 dalvik.system.NativeStart.main(Native Method)handleLaunchActivity(ActivityThread.java:2469) 在 android.app.ActivityThread.access$1100(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 在 android.os.Handler.dispatchMessage( Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method)在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:730) 在 dalvik.system.NativeStart.main(Native Method)151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android。 internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) at dalvik.system.NativeStart.main(Native Method)151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android。 internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) at dalvik.system.NativeStart.main(Native Method)app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal。 os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) at dalvik.system.NativeStart.main(Native Method)app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal。 os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) at dalvik.system.NativeStart.main(Native Method)
所以我的问题是有什么方法可以像以前的输出一样从e
对象中获取,以便我可以将这个完整的异常发送到我的服务器?
解决方案
推荐阅读
- amazon-web-services - PutItem 与 DynamoDB 使用列表/数组
- android - 使用 shell 脚本重新启动 Android 应用程序
- javascript - 将参数传递给函数 Reactjs
- php - php 和 sql/数据库。试图获取非对象的属性
- symfony - Symfony Doctrine LAZY 数据加载
- c# - httpcookiecollection 的 .net 标准迁移
- ef-code-first - EF Core 2:使用 deletebehaviour.Restrict 创建映射时出现问题
- node.js - 如何在mongoose的insertMany API中访问BulkWriteResult的insertIds数组?
- objective-c - 如何从另一个视图控制器检索传递的数据?- 目标-C
- node.js - 如何使用 Firebase Cloud Functions 检测环境是开发环境还是生产环境?