提问者:小点点

如何测试未处理的异常?


我有一个Android应用程序,我想将一个未处理的异常保存到Sqlite DB中。我已经创建了将错误消息保存到数据库中的所有功能。

我的问题是,如何引发未处理的异常?

当我尝试抛出新异常(“Save me intoDB”)时,这不起作用,因为我被迫用try catch包围它。

你知道我怎么才能杀死我的Android应用吗?


共1个答案

匿名用户

尝试如下操作-代码在kotlin

private lateinit var defaultUEH: Thread.UncaughtExceptionHandler

override fun onCreate() {
        super.onCreate()
        setupExceptionHandler()
    }

 private fun setupExceptionHandler() {
        try {
            defaultUEH = Thread.getDefaultUncaughtExceptionHandler()
            Thread.setDefaultUncaughtExceptionHandler(unCaughtExceptionHandler)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

private val unCaughtExceptionHandler = Thread.UncaughtExceptionHandler { thread, ex ->
        val stringWriter = StringWriter()
        ex?.printStackTrace(PrintWriter(stringWriter))
        val exception = stringWriter.toString()
        // send the exception to the DB here
        defaultUEH.uncaughtException(thread, ex)
        exitProcess(1)
    }

希望能进一步帮助你。