如何捕获 Jetpack compose 中的错误?

cev*_*ing 7 kotlin android-jetpack-compose

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

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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不编译:

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

搞什么?

我还应该使用什么?

小智 0

@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
    }
}
Run Code Online (Sandbox Code Playgroud)

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