提交 c0f30d33 authored 作者: 史晓晨's avatar 史晓晨

feat:优化网络异常处理

上级 916d96cd
...@@ -105,7 +105,7 @@ abstract class BaseDio { ...@@ -105,7 +105,7 @@ abstract class BaseDio {
); );
onNetSuccess(response, successCallback, errorCallback); onNetSuccess(response, successCallback, errorCallback);
} on DioException catch (e) { } on DioException catch (e) {
var result = await _handleHttpException(e.response); var result = await _handleHttpException(e);
// result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写 // result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写
if (result != null) { if (result != null) {
await errorCallback?.call(result["code"], result["message"]); await errorCallback?.call(result["code"], result["message"]);
...@@ -146,7 +146,7 @@ abstract class BaseDio { ...@@ -146,7 +146,7 @@ abstract class BaseDio {
return {"code": 400, "message": "数据解析错误"}; return {"code": 400, "message": "数据解析错误"};
} }
} on DioException catch (e) { } on DioException catch (e) {
var result = await _handleHttpException(e.response); var result = await _handleHttpException(e);
// result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写 // result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写
if (result != null) { if (result != null) {
return result; return result;
...@@ -184,7 +184,24 @@ abstract class BaseDio { ...@@ -184,7 +184,24 @@ abstract class BaseDio {
} }
/// 处理http异常 /// 处理http异常
Future<Map<String, dynamic>?> _handleHttpException(Response? response) async { Future<Map<String, dynamic>?> _handleHttpException(DioException e) async {
switch (e.type) {
case DioExceptionType.connectionError:
return {"code": -500, "message": "网络连接异常,请检查网络设置"};
case DioExceptionType.connectionTimeout:
return {"code": -500, "message": "连接服务器超时,请稍后再试"};
case DioExceptionType.sendTimeout:
return {"code": -500, "message": "发送数据超时,请重试"};
case DioExceptionType.receiveTimeout:
return {"code": -500, "message": "接收数据超时,请重试"};
default:
return _handleHttpOtherException(e.response);
}
}
/// 其他异常处理
Future<Map<String, dynamic>?> _handleHttpOtherException(
Response? response) async {
if (response == null) { if (response == null) {
return {"code": -500, "message": "网络请求错误,请稍后重试"}; return {"code": -500, "message": "网络请求错误,请稍后重试"};
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论