美文网首页
Kotlin的异常处理

Kotlin的异常处理

作者: Infinity_空 | 来源:发表于2022-01-16 14:08 被阅读0次
  1. 异常处理
    1. 通过封装的方式,对网络请求和结果处理,使用runCatching + try/catch进行包裹
        runCatching {
            doRequest.invoke()
        }.onSuccess { result: Response<T> ->
            try {
                if (result.isSuccessful) {
                    successAction(result)
                } else {
                    failAction(result)
                }
            } catch (e: Exception) {
                Timber.tag("onSuccess").e(e)
            }
        }.onFailure { e ->
            Timber.tag("onFailure").d(e)
        }
    
    runCatching是Kotlin的一个顶层函数,可以对其中的lamba表达式进行try/catch,这里在上面的方法中是为了对网络请求返回的一些异常值进行捕获。
    onSuccess中的try/catch则是对结果处理可能出现的异常进行捕获。
    1. 在协程方法中对于传入的上下文参数CoroutineContext,可以传入CoroutineExceptionHandler这个上下文来捕获协程中的异常。
      例:
      viewModelScope.launch(CoroutineExceptionHandler { _, e -> onError(e) }) {
          block.invoke(this)
      }
      
      withContext(CoroutineExceptionHandler { _, e -> onError(e) }) {
          block.invoke(this)
      }
      
    但是这个CoroutineExceptionHandler只是为了在协程运行中作为最后的防线,防止程序抛出异常导致crash,并不能对异常进行处理和恢复。也仅有当协程中抛出没有处理的异常,才会被这个上下文所捕获。并且,当异常被这个上下文捕获时,意味着整个协程已经被异常终止了。
    另外,这个CoroutineExceptionHandler只能作为最顶层的协程的上下文,并不能作为子协程的上下文。作用域是全局,有点类似于GlobalScope

参考:
Android协程(Coroutines)系列-Exception异常处理 - 掘金 (juejin.cn)

相关文章

  • 重拾Kotlin(17)-异常

    一、异常 Kotlin 中异常处理的基本形式和 Java 类似 和 Java 不同的是,Kotlin 中 thro...

  • Kotlin学习笔记(十六)异常

    Kotlin的异常使用方式和Java一样,除此之外Kotlin在处理异常的时候可以使用表达式

  • Kotlin2.5异常

    Kotlin的异常处理和Java以及其他许多语言的处理方式相似,异常处理语句的基本形式和Java类似,抛出异常的方...

  • 23.kotlin异常处理

    kotlin处理异常的时候和java有些区别,对于编译时异常kotlin认为大部分都是没有必要的,所以没有编译时异...

  • Android版kotlin协程入门(三):kotlin协程的异

    kotlin协程的异常处理 在上一篇《Android kotlin协程入门(二):kotlin协程的关键知识点初步...

  • kotlin-异常处理

    异常是什么 异常就是有异于常态,和正常情况不一样,有错误出现。 异常分类 Error: 是程序中无法处理的错误,表...

  • 在kotlin协程中如何正确处理异常

    在简单的kotlin中的异常处理 那么在协程中又是如何处理异常呢? 在Coroutines中使用try-catch...

  • Kotlin异常处理(1)异常类型

    Throwable 类Error 和 Exception   Kotlin中的异常有3种,Exception、Er...

  • Kotlin异常处理(2)捕获异常

    try-catch 语句try-catch 表达式多 catch 代码块try-catch 语句嵌套 一、try-...

  • Kotlin 异常

    Kotlin 的异常和 Java 的一样, try...catch...finally代码块处理异常,唯一一点不同...

网友评论

      本文标题:Kotlin的异常处理

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