Nesta página, descrevemos como processar erros ao usar a API Maps JavaScript e a classe Place.
A API Maps JavaScript usa as seguintes classes para erros:
-
MapsNetworkError
representa um erro de rede de um serviço da Web (pode incluir erros de RPCStatus). -
MapsRequestError
representa um erro de solicitação de um serviço da Web, ou seja, o equivalente a um código 4xx em HTTP. -
MapsServerError
representa um erro do lado do servidor de um serviço da Web, ou seja, o equivalente a um código 5xx em HTTP.
As classes MapsNetworkError
, MapsRequestError
e MapsServerError
pertencem à biblioteca principal do Maps (link em inglês).
Saiba mais sobre bibliotecas.
Cada uma dessas classes contém as seguintes propriedades:
A propriedade code
identifica o tipo de erro, e a propriedade endpoint
identifica o endpoint que retornou o erro (por exemplo, PLACES_DETAILS
). Como MapsNetworkError
é uma subclasse de Error
, outras propriedades, incluindo name
e message
, também estão disponíveis.
O snippet a seguir mostra a estrutura de uma mensagem de erro do Maps:
MapsRequestError: PLACES_GET_PLACE: INVALID_ARGUMENT: Error fetching fields: The provided Place ID: ChIJN5Nz71W3j4ARhx5bwpTQEGg**** is not valid. [error.name ] [error.endpoint ] [error.code ] [error.message ---> ... ]
O erro bruto inclui tudo na string de erro. error.message
inclui a string de erro inteira, exceto error.name
.
O snippet a seguir demonstra o tratamento de erros ao usar a classe Place. Este exemplo usa um bloco try/catch para processar cada um dos três tipos de erro. Um código semelhante pode ser usado para processar erros em qualquer classe da API Maps JavaScript.
async function getPlaceDetails() { const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary; const { MapsNetworkError, MapsRequestError, MapsServerError } = await google.maps.importLibrary("core") as google.maps.CoreLibrary; // Use place ID to create a new Place instance. const place = new Place({ id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg****', // Pass a bad Place ID to trigger an error. }); // Error handling for fetchFields. try { // Call fetchFields, passing the desired data fields. await place.fetchFields({ fields: ['displayName', 'formattedAddress', 'location'] }); } catch (error: any) { if (error && error instanceof google.maps.MapsRequestError) { // HTTP 4xx request error. console.error('fetchFields failed: MapsRequestError - check the request parameters', error); } else if (error && error instanceof google.maps.MapsServerError) { // HTTP 5xx server-side error. console.error('fetchFields failed: MapsServerError', error); } else if (error && error instanceof google.maps.MapsNetworkError) { // Network error. console.error('fetchFields failed: MapsNetworkError', error); } else { console.error('fetchFields failed: An unknown error occurred', error); } } // ... }