У меня есть сервер, написанный на Java, и клиент, написанный на PHP. Как клиент может перехватить исключение с сервера, если что-то пойдет не так? Я не могу найти ничего об обработке исключений в документации gRPC.
Благодарю вас!
У меня есть сервер, написанный на Java, и клиент, написанный на PHP. Как клиент может перехватить исключение с сервера, если что-то пойдет не так? Я не могу найти ничего об обработке исключений в документации gRPC.
Благодарю вас!
Для обработанных исключений вызовите responseObserver.onError()
. Если вы передадите StatusRuntimeException
или StatusException
(обычно создается через status.asRuntimeException()
), код состояния и описание будут переданы клиенту. Необработанные исключения в обратном вызове отменят RPC и продолжат распространять исключение (обычно это приводит к вызову UncaughtExceptionHandler
для исполнителя).
В ответе на стороне клиента (php) http://www.grpc.io/grpc/php/source-class-Grpc.UnaryCall.html#82
статус здесь будет иметь поля кода и сведений, которые будут определять код ответа и соответствующее сообщение, если оно установлено, как указано в ответе Эрика. На основании этого на клиенте может быть выполнена соответствующая обработка ошибок.