我的应用程序使用 grpc 将图像从客户端发送到服务器,但我无法捕捉到该错误,这是我的代码:
var response;
try {
response = await dataService.sendFace(
listImageToListFaceRecImage(
dataImages, dataTrackID, dataRect, dataLandMark),
dataDeviceID,
dataDoorID);
} catch(e) {
print('Caught error: $e');
}
response.first.then((value) {
isSending = false;
print("receive");
print(value.result);
if (value.result.isNotEmpty) {
Map<String, dynamic> result =
(jsonDecode(value.result) as List<dynamic>)[0];
String personCode = result['person_code'];
replyTo.send([personCode, capturedFaceImage]);
}
});
Run Code Online (Sandbox Code Playgroud)
我想要的结果是:
捕获错误://此处出错
但它显示了这个错误,我不知道为什么它无法捕获:
gRPC 错误(14,连接错误:SocketException:连接失败(操作系统错误:网络无法访问,errno = 101),地址 = 172.16.0.39,端口 = 4001)
这可以通过将错误捕获为 GrpcError 来解决,然后您可以访问错误的所有部分:
\ntry {\nresponse = await dataService.sendFace(\n listImageToListFaceRecImage(\n dataImages, dataTrackID, dataRect, dataLandMark),\n dataDeviceID,\n dataDoorID);\n} on GrpcError catch(e) {\n print(\'Caught error: ${e.message}\');\n} catch (e){\n // any other error\n}\n...\nRun Code Online (Sandbox Code Playgroud)\n也不要\xc2\xb4t 忘记导入:\nimport \'package:grpc/grpc.dart\';
您现在可以访问所有错误字段:
\nfinal int code;\nfinal String? message;\nfinal Object? rawResponse;\nfinal Map<String, String>? trailers;\nfinal List<GeneratedMessage>? details;\nRun Code Online (Sandbox Code Playgroud)\n参考:https://github.com/grpc/grpc-dart/blob/master/lib/src/shared/status.dart
\n| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |