【发布时间】:2022-07-28 13:23:19
【问题描述】:
远程服务器
@Catch(RpcException)
export class RpcExceptionHandler implements RpcExceptionFilter<RpcException> {
catch(exception: RpcException, host: ArgumentsHost): Observable<any> {
return throwError(exception.getError());
}
}
@UseFilters(new RpcExceptionHandler())
@GrpcMethod('AppController', 'Accumulate')
async accumulate(numberArray: INumberArray, metadata: any): Promise<ISumOfNumberArray> {
throw new RpcException({
code: 5,
message: 'Data Not Found'
})
}
客户端代码
@Get('add')
async getSumc(@Query('data') data: number[]) {
try {
let ata = await this.grpcService.accumulate({ data });
return ata;
} catch (err) {
//logic here if error comes
return err;
}
}
原型定义。
syntax = "proto3";
package app;
// Declare a service for each controller you have
service AppController {
// Declare an rpc for each method that is called via gRPC
rpc Accumulate (NumberArray) returns (SumOfNumberArray);
}
// Declare the types used above
message NumberArray {
repeated double data = 1;
}
message SumOfNumberArray {
double sum = 1;
}
如果出现错误,它不会捕获块,只是显示服务器错误。 如果远程抛出任何错误,我想捕获错误。
【问题讨论】:
-
没有人敢回答这个问题。 :)
标签: node.js error-handling nestjs grpc