Errors
The above examples show how to handle a successful RPC when the client successfully receives a response from the server. But what happens if our request is invalid? Or if there is a bug in the server that results in an error?
Earlier in the chapter, when we were creating the Go server, we introduced the gRPC
error codes: sixteen error codes that servers can use when categorizing an error. The
Go server has a simple example: if the client requests an unknown film ID, it sends
back a Not Found error code.
In RPC clients, such an error will manifest as an exception:
Ruby
# Our server is hard-coded to know about IDs 4-6. It does# not know about ID 7.request=GetFilmRequest.new(id:'7')beginresponse=stub.get_film(request)putsresponse.inspectrescueGRPC::BadStatus=>e# RPC exceptions have a numeric 'code' field (the gRPC error code)# and a string 'details' (the message supplied by the server)puts"failed:#{e.details}(code...