我的应用程序使用 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]);
}
});
我想要的结果是:
捕获错误://此处错误
但是它显示了这个错误,我不知道为什么它无法捕获:
gRPC 错误(14,连接错误:SocketException:连接失败(操作系统错误:网络无法访问,errno = 101),地址 = 172.16.0.39,端口 = 4001)
这可以通过将错误捕获为 GrpcError 来解决,然后您可以访问错误的所有部分:
try {
response = await dataService.sendFace(
listImageToListFaceRecImage(
dataImages, dataTrackID, dataRect, dataLandMark),
dataDeviceID,
dataDoorID);
} on GrpcError catch(e) {
print('Caught error: ${e.message}');
} catch (e){
// any other error
}
...
也不要忘记导入:
import 'package:grpc/grpc.dart';
您现在可以访问所有错误字段:
final int code;
final String? message;
final Object? rawResponse;
final Map<String, String>? trailers;
final List<GeneratedMessage>? details;
参考:https://github.com/grpc/grpc-dart/blob/master/lib/src/shared/status.dart
这很有帮助。我只需要导入 grpc 包即可。