次のコードでは戻り値を返してメソッドを終了していますが、コンテキストのステータスに OK 以外の値を設定しているため RpcException が発生します。
public async override TaskSearch(Request request, ServerCallContext context) { context.Status = new Status(StatusCode.Internal, "実行できません。"); context.ResponseTrailers.Add("status", "123"); return await Task.FromResult(Response).ConfigureAwait(false); }
明示的に RpcException をスローしたときとほぼ同じ結果になります。
二つの実装が混在するのは望ましくはありませんし、使い分ける理由もなさそうですので、開発チームで例外を返すときの実装ルールを決めたほうがよいと思います。public async override TaskSearch(Request request, ServerCallContext context) { Metadata trailers = new Metadata(); trailers.Add("ErrorCode", "123"); throw new RpcException( new Status(StatusCode.Internal, "実行できません。") , trailers ); }
0 件のコメント:
コメントを投稿