美文网首页
Android 中的异常处理

Android 中的异常处理

作者: 不再更新_ | 来源:发表于2021-12-15 14:34 被阅读0次

异常发生时,如果没有一个异常处理器来处理这个异常,程序会被中止。在 JVM 当中有一个预先定义好的异常处理层次结构。

结构中的第一层是 catch 块。

try {
    crashyCode()
} catch (e: IllegalStateException) {
    // 处理 IllegalStateException
} catch (e: HTTPException) {
    // 处理 HTTPException
}

如果第一个 catch 块无法处理这个异常,异常便会被传递给下面的 catch 块。如果所有的 catch 块都无法处理某个异常,该异常便会交由当前线程的 UncaughtExceptionHandler 来处理。UncaughtExceptionHandler 是个只有一个方法的接口。

val currentThread = Thread.currentThread()
currentThread.setUncaughtExceptionHandler { thread, exc ->
    // 处理当前线程中所有未捕获的异常
}

UncaughtExceptionHandler 可以调协在当前线程里,未被 catch 块捕获的异常处理流程会先来到这里;还可以设置在 ThreadGroup 当中,当前线程的 UncaughtExceptionHandler 无法处理的异常会在这里被处理。如果 ThreadGroupUncaughtExceptionHandler 还是无法处理该异常,那么最终将会被交由默认异常处理程序 ( default uncaught exception handler ) 处理,也就是打印出异常栈,并终止程序。当然你也可以覆盖这种行为:

Thread.setDefaultUncaughtExceptionHandler { thread, exc ->
    // 处理所有未捕获的异常
}

相关文章

网友评论

      本文标题:Android 中的异常处理

      本文链接:https://www.haomeiwen.com/subject/pnaufrtx.html