面试题答案
一键面试在Flutter应用中使用异步/await进行网络请求时,为了全面处理网络不稳定情况下的异常,提升网络请求的稳定性,可以按照以下方式:
- 设置超时时间:在
http
请求中,可以使用Duration
来设置超时时间。 - 处理不同类型异常:主要处理
SocketException
(连接失败)、TimeoutException
(超时)以及其他未处理的Exception
。
以下是具体代码示例:
import 'package:http/http.dart' as http;
import 'package:http/http.dart';
import 'dart:async';
Future<String> fetchData() async {
try {
final response = await http.get(
Uri.parse('https://example.com/api/data'),
// 设置超时时间为5秒
timeout: const Duration(seconds: 5),
);
if (response.statusCode == 200) {
return response.body;
} else {
throw Exception('Failed to load data, status code: ${response.statusCode}');
}
} on SocketException {
throw Exception('Failed to connect to the server');
} on TimeoutException {
throw Exception('Request timed out');
} catch (e) {
throw Exception('An error occurred: $e');
}
}
在上述代码中:
- 使用
http.get
发起网络请求,并通过timeout
参数设置了5秒的超时时间。 - 使用
try-catch
块捕获异常,针对SocketException
、TimeoutException
分别进行处理,同时也有一个通用的catch
块来捕获其他可能出现的异常。这样可以有效地处理各种网络异常,提升网络请求的稳定性。