本篇解析 example-cancel-07.kt,介绍如何给任务设定执行期限。
1. 核心构建器:withTimeout
withTimeout 用于在指定时间内执行一段逻辑。
- 特性:如果代码块在规定时间内没有运行完,它会立即取消该协程并抛出
TimeoutCancellationException。
2. 代码解析
1 | withTimeout(1300L) { |
- 由于每次
delay500ms,在打印两次(1000ms)后,第三次打印前就会触发 1300ms 的阈值。 - 程序会因为抛出异常而终止。
3. 开发者感悟
withTimeout 是处理网络请求或数据库查询时的必备工具。但要注意,因为它会抛出异常,通常需要配合 try-catch 使用,否则可能会导致应用崩溃。