MST

星途 面试题库

面试题:Flutter async/await 链式调用的错误处理

假设有一个Flutter应用,需要通过一系列异步操作来获取数据,每个异步操作都使用async/await。如果其中一个异步操作失败,如何确保后续的操作不再执行,并且能将错误信息准确传递到最外层进行统一处理?请提供一个完整的代码示例,包括至少三个链式的异步操作以及相应的错误处理逻辑。
16.3万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
import 'dart:async';

Future<String> asyncOperation1() async {
  // 模拟异步操作,这里返回一个成功的结果
  await Future.delayed(const Duration(seconds: 1));
  return '操作1成功';
}

Future<String> asyncOperation2() async {
  // 模拟异步操作,这里抛出一个错误
  await Future.delayed(const Duration(seconds: 1));
  throw Exception('操作2失败');
}

Future<String> asyncOperation3() async {
  // 模拟异步操作,这里返回一个成功的结果
  await Future.delayed(const Duration(seconds: 1));
  return '操作3成功';
}

Future<void> performAsyncOperations() async {
  try {
    final result1 = await asyncOperation1();
    print(result1);

    final result2 = await asyncOperation2();
    print(result2);

    final result3 = await asyncOperation3();
    print(result3);
  } catch (e) {
    // 捕获并处理错误
    print('发生错误: $e');
  }
}

void main() {
  performAsyncOperations();
}

在上述代码中:

  1. asyncOperation1asyncOperation2asyncOperation3 模拟了三个异步操作。
  2. performAsyncOperations 函数中使用 try-catch 块来捕获异步操作中抛出的错误。
  3. asyncOperation2 抛出错误时,asyncOperation3 不会执行,错误会被 catch 块捕获并处理。