【问题标题】:How to catch an error in Jetpack compose?如何捕获 Jetpack compose 中的错误?
【发布时间】:2022-12-25 21:32:51
【问题描述】:

我试图以这种方式捕获应用程序错误:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            try {
                MyApp()
            }
            catch (t: Throwable) {
                Text(t.message ?: "Error", fontSize = 24.sp)
                Text(t.stackTraceToString(), fontFamily = FontFamily.Monospace)
            }
        }
    }
}

但它不编译:

可组合函数调用不支持 Try catch。

什么鬼?

我还应该使用什么?

【问题讨论】:

    标签: kotlin android-jetpack-compose


    【解决方案1】:
    @Composable
    fun MyScreen() {
        val data = try {
            loadData()
        } catch (error: Throwable) {
            // Handle the error here
            null
        }
    
        if (data != null) {
            // Render the data
        } else {
            // Render an error message or retry button
        }
    }
    

    要使用 catch 运算符,您可以在 Composable 函数上调用它并传入 lambda 函数来处理错误。 lambda 函数应该采用 Throwable 类型的单个参数,它表示发生的错误。在 lambda 函数内部,您可以执行任何必要的错误处理,例如显示错误消息或重试失败的操作。

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多