Questa pagina descrive come gestire gli errori durante l'utilizzo dell'API Maps JavaScript e della classe Place.
L'API Google Maps JavaScript utilizza le seguenti classi per gli errori:
-
MapsNetworkError
rappresenta un errore di rete di un servizio web (può includere errori RPCStatus). -
MapsRequestError
rappresenta un errore di richiesta da un servizio web (ovvero l'equivalente di un codice 4xx in HTTP). -
MapsServerError
rappresenta un errore lato server di un servizio web (ovvero l'equivalente di un codice 5xx in HTTP).
Le classi MapsNetworkError
, MapsRequestError
e MapsServerError
appartengono alla libreria principale di Maps.
Scopri di più sulle librerie.
Ognuna di queste classi contiene le seguenti proprietà:
La proprietà code
identifica il tipo di errore, mentre la proprietà endpoint
identifica l'endpoint che ha restituito l'errore (ad esempio PLACES_DETAILS
). Poiché
MapsNetworkError
è una sottoclasse di Error
, sono disponibili anche altre proprietà, tra cui
name
e message
.
Il seguente snippet mostra la struttura di un messaggio di errore di 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 ---> ... ]
L'errore non elaborato include tutto ciò che è presente nella stringa di errore; error.message
include l'intera stringa di errore, escluso error.name
.
Il seguente snippet mostra la gestione degli errori quando si utilizza la classe Place. Questo esempio utilizza un blocco try/catch per gestire ciascuno dei tre tipi di errore. Un codice simile può essere utilizzato per gestire gli errori per qualsiasi classe dell'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); } } // ... }