import 'package:dio/dio.dart'; /// API异常消息 /// /// 当API访问出现错误时将会抛出[ApiException]异常,该异常对象包含[code]和[message]两个字段 class ApiException implements Exception { final String _message; final String _code; ApiException( this._code, this._message, ); String get message => _message; String get code => _code; @override String toString() { return "$_code, $_message"; } factory ApiException.http(DioException e) { switch (e.type) { case DioExceptionType.cancel: return ApiException("-1", "请求取消"); case DioExceptionType.connectionTimeout: return ApiException("-1", "连接超时"); case DioExceptionType.sendTimeout: return ApiException("-1", "请求超时"); case DioExceptionType.receiveTimeout: return ApiException("-1", "响应超时"); case DioExceptionType.badResponse: try { int? errCode = e.response!.statusCode; switch (errCode) { case 400: return ApiException(errCode!.toString(), "请求语法错误"); case 401: return ApiException(errCode!.toString(), "没有权限"); case 403: return ApiException(errCode!.toString(), "服务器拒绝执行"); case 404: return ApiException(errCode!.toString(), "无法连接服务器"); case 405: return ApiException(errCode!.toString(), "请求方法被禁止"); case 500: return ApiException(errCode!.toString(), "服务器内部错误"); case 502: return ApiException(errCode!.toString(), "无效的HTTP请求"); case 503: return ApiException(errCode!.toString(), "服务器没有响应"); case 505: return ApiException(errCode!.toString(), "不支持HTTP协议请求"); default: return ApiException( errCode!.toString(), e.response!.statusMessage!); } } catch (_) { return ApiException("-1", "未知错误"); } default: return ApiException("-1", e.message ?? ''); } } }