На этой странице описывается, как обрабатывать ошибки при использовании Maps JavaScript API и класса Place.
API JavaScript Google Maps использует следующие классы для ошибок:
-
MapsNetworkError
представляет собой сетевую ошибку веб-службы (может включать ошибки RPCStatus ). -
MapsRequestError
представляет собой ошибку запроса от веб-службы (т.е. эквивалент кода 4xx в HTTP). -
MapsServerError
представляет собой ошибку на стороне сервера от веб-службы (т.е. эквивалент кода 5xx в HTTP).
Классы MapsNetworkError
, MapsRequestError
и MapsServerError
относятся к основной библиотеке карт . Подробнее о библиотеках …
Каждый из этих классов содержит следующие свойства:
Свойство code
определяет тип ошибки; свойство endpoint
определяет конечную точку, вернувшую ошибку (например, PLACES_DETAILS
). Поскольку MapsNetworkError
является подклассом Error
, доступны также другие свойства, включая name
и message
.
В следующем фрагменте показана структура сообщения об ошибке Карт:
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 ---> ... ]
Необработанная ошибка включает в себя все содержимое строки ошибки; error.message
включает в себя всю строку ошибки, за исключением error.name
.
В следующем фрагменте кода показана обработка ошибок при использовании класса Place. В этом примере блок try/catch используется для обработки каждого из трёх типов ошибок. Похожий код можно использовать для обработки ошибок любого класса JavaScript API Карт.
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); } } // ... }