Cette page explique comment gérer les erreurs lorsque vous utilisez l'API Maps JavaScript et la classe Place.
L'API Maps JavaScript utilise les classes d'erreur suivantes :
-
MapsNetworkError
représente une erreur réseau provenant d'un service Web (peut inclure des erreurs RPCStatus). -
MapsRequestError
représente une erreur de requête provenant d'un service Web (c'est-à-dire l'équivalent d'un code 4xx en HTTP). -
MapsServerError
représente une erreur côté serveur d'un service Web (c'est-à-dire l'équivalent d'un code 5xx en HTTP).
Les classes MapsNetworkError
, MapsRequestError
et MapsServerError
appartiennent à la bibliothèque Maps Core.
En savoir plus sur les bibliothèques
Chacune de ces classes contient les propriétés suivantes :
La propriété code
identifie le type d'erreur, tandis que la propriété endpoint
identifie le point de terminaison qui a renvoyé l'erreur (par exemple, PLACES_DETAILS
). Étant donné que MapsNetworkError
est une sous-classe de Error
, d'autres propriétés, y compris name
et message
, sont également disponibles.
L'extrait suivant montre la structure d'un message d'erreur 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'erreur brute inclut tout ce qui se trouve dans la chaîne d'erreur. error.message
inclut l'intégralité de la chaîne d'erreur, à l'exception de error.name
.
L'extrait suivant montre comment gérer les erreurs lors de l'utilisation de la classe Place. Cet exemple utilise un bloc try/catch pour gérer chacun des trois types d'erreurs. Un code similaire peut être utilisé pour gérer les erreurs de n'importe quelle classe de l'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); } } // ... }