首页 > 解决方案 > 如何知道错误来自我的生产应用程序的哪个活动?

问题描述

我的应用程序已投入生产 2 个月,我正在检查显示游戏控制台崩溃的部分,并且我已经能够解决一些问题,但有些问题我不知道它们究竟来自什么活动,mi 错误java.lang.IllegalStateException是当我按下查看更多时:

    java.lang.IllegalStateException: 
  at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:115)
  at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:919)
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: 
  at android.database.sqlite.SQLiteConnection.nativeOpen (Native Method)
  at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:300)
  at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:218)
  at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:737)
  at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:284)
  at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:251)
  at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:1386)
  at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:1331)
  at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:967)
  at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:955)
  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:448)
  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:391)
  at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:145)
  at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:106)
  at androidx.room.RoomDatabase.beginTransaction (RoomDatabase.java:352)
  at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:156)
  at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:87)

在安装了我的应用程序的 750 个用户中,它发生了 5 次,是否应该调查单个用户(750 个)发生的错误?最重要的是,我怎么知道错误的确切来源?

标签: javaandroidsqlite

解决方案


抛出异常时,放置当前正在访问的用户,以便您可以跟踪它。在异常中添加尽可能多的信息,这将帮助您找出可能导致它的项目。

https://stackify.com/best-practices-exceptions-java/

这些是一些很好的例子以及可以遵循的良好做法。在提到的那些消息中,添加用户 ID 或有助于您识别正在发生的事情的内容。学习制作自定义异常并捕获最具体的异常。不要只捕获异常,最好具体说明您捕获的异常而不是撒网。


推荐阅读