我有以下功能:
Future<Map<String, dynamic>> login({
required String identifier,
required String password,
}) async {
final response = await post(
obj: jsonEncode({
"identifier": identifier,
"password": password,
}),
endpoint: '/api/auth/login',
);
await getRequestStatus(response, APIRequest.postAuthLogin);
try {
return response.data as Map<String, dynamic>;
} catch (e) {
throw GeneralFailure();
}
}
当我的API调用返回200时,执行下一行。
await getRequestStatus(response, APIRequest.postAuthLogin);
然而,我遇到的问题是,当我的API调用返回200以外的任何值时,整个函数都会停止运行,应用程序将进入下一个代码段。
如果有帮助的话,这就是我调用函数的地方:
try {
await _authenticationRepository.login(
identifier: state.identifier.value,
password: state.password.value,
);
emit(
state.copyWith(
submissionState: SubmissionState.submissionSuccess,
message: 'loginSuccess',
),
);
} on IdentifierDoesntExistFailure {
emit(
state.copyWith(
submissionState: SubmissionState.submissionFailure,
message: 'loginIdentifierDoesntExist',
),
);
} on WrongProviderFailure {
...
} catch (e) {
emit(
state.copyWith(
submissionState: SubmissionState.submissionServerError,
),
);
}
一旦API返回错误,代码立即跳到第
} on IdentifierDoesntExistFailure {
而不是在另一个函数中继续,并且总是在catch()部分结束。
感谢您的任何帮助!
1条答案
按热度按时间zxlwwiss1#
首先,你可以像这样改变login方法中的异常处理:
当你想处理异常时,你需要这样做: