簡體   English   中英

為什么在 catch 塊中更改調度程序會拋出 VerifyError

[英]Why does changing dispatcher in catch block throw VerifyError

我想了解為什么在 catch 塊withContext()Dispatchers.MainDispatchers.IO一起使用時會引發此異常。

這是我的代碼:

init {

    viewModelScope.launch {
        try {
            throw RuntimeException("whatever")
        } catch (e: Exception){
            withContext(Dispatchers.MAIN) {
                e.printStackTrace()
            }
        }
    }
}

此代碼拋出java.lang.VerifyError

Verifier rejected class xx.xxxx.ErrorViewModel: java.lang.Object 
    xx.xxxx.ErrorViewModel$1.invokeSuspend(java.lang.Object) 
  failed to verify: java.lang.Object
    xx.xxxx.ErrorViewModel$1.invokeSuspend(java.lang.Object): 
      [0x3D] register v4 has type Reference: java.lang.Exception but expected 
      Precise Reference: kotlin.jvm.internal.Ref$ObjectRef 
      (declaration of 'xx.xxxx.ErrorViewModel$1' appears in 
      /data/app/xx.xxxx-9pkI5L5NB9qa1CWUxAapUw==/base.apk!classes2.dex)

你永遠不應該看到一個驗證錯誤; 這可能表明編譯器中存在錯誤。

我建議在 JetBrains YouTrack網站上提出問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM