从可组合项中抛出异常
Throw exception from a Composable
我写了一个提供 IconButton 的简单可组合项。
@Composable
fun MenuIcon(
@DrawableRes iconRes: Int,
contentDescription: String,
onClick: () -> Unit,
) {
if (contentDescription.isEmpty()) {
throw IllegalArgumentException("contentDescription is mandatory and should not be empty.")
}
// I also tried assert(contentDescription.isNotEmpty())
IconButton(onClick = onClick) {
Image(
painter = painterResource(id = iconRes),
contentDescription = contentDescription,
)
}
}
在我们的项目中,我们希望强制我们的开发人员提供内容描述以实现可访问性目的。所以我添加了一个简单的检查以在 contentDescription 为空时抛出异常。
问题如下:当抛出异常时,在 Logcat 中,我得到另一个未指向我的可组合对象的异常:
java.lang.IllegalStateException: pending composition has not been applied
[...]
它不会帮助使用我的可组合项的开发人员发现问题...
有显示我的错误消息的解决方案吗?
谢谢!
从线程中抛出异常,这样你就可以确保堆栈中没有任何东西捕获它并搞乱你预期的崩溃:
if (contentDescription.isEmpty()) {
thread(name = "WatchdogThread") {
throw IllegalArgumentException("...")
}
}
不必担心优化(不使用线程池或协程),因为您只希望内容描述在调试版本中为空。
干杯
我写了一个提供 IconButton 的简单可组合项。
@Composable
fun MenuIcon(
@DrawableRes iconRes: Int,
contentDescription: String,
onClick: () -> Unit,
) {
if (contentDescription.isEmpty()) {
throw IllegalArgumentException("contentDescription is mandatory and should not be empty.")
}
// I also tried assert(contentDescription.isNotEmpty())
IconButton(onClick = onClick) {
Image(
painter = painterResource(id = iconRes),
contentDescription = contentDescription,
)
}
}
在我们的项目中,我们希望强制我们的开发人员提供内容描述以实现可访问性目的。所以我添加了一个简单的检查以在 contentDescription 为空时抛出异常。
问题如下:当抛出异常时,在 Logcat 中,我得到另一个未指向我的可组合对象的异常:
java.lang.IllegalStateException: pending composition has not been applied
[...]
它不会帮助使用我的可组合项的开发人员发现问题... 有显示我的错误消息的解决方案吗?
谢谢!
从线程中抛出异常,这样你就可以确保堆栈中没有任何东西捕获它并搞乱你预期的崩溃:
if (contentDescription.isEmpty()) {
thread(name = "WatchdogThread") {
throw IllegalArgumentException("...")
}
}
不必担心优化(不使用线程池或协程),因为您只希望内容描述在调试版本中为空。
干杯