Na tej stronie znajdziesz informacje o tym, jak obsługiwać błędy podczas korzystania z interfejsu Maps JavaScript API i klasy Place.
Interfejs Maps JavaScript API używa tych klas błędów:
-
MapsNetworkError
reprezentuje błąd sieci z usługi internetowej (może obejmować błędy RPCStatus). -
MapsRequestError
reprezentuje błąd żądania z usługi internetowej (czyli odpowiednik kodu 4xx w HTTP). -
MapsServerError
oznacza błąd po stronie serwera w usłudze internetowej (czyli odpowiednik kodu 5xx w HTTP).
Klasy MapsNetworkError
, MapsRequestError
i MapsServerError
należą do podstawowej biblioteki Map Google.
Dowiedz się więcej o bibliotekach.
Każda z tych klas zawiera te właściwości:
Właściwość code
określa typ błędu, a właściwość endpoint
określa punkt końcowy, który zwrócił błąd (np. PLACES_DETAILS
). Ponieważ MapsNetworkError
jest podklasą Error
, dostępne są też inne właściwości, w tym name
i message
.
Poniższy fragment pokazuje strukturę komunikatu o błędzie w Mapach:
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 ---> ... ]
Surowy błąd obejmuje wszystko w ciągu błędu; error.message
obejmuje cały ciąg błędu z wyjątkiem error.name
.
Ten fragment kodu pokazuje obsługę błędów podczas korzystania z klasy Place. W tym przykładzie używamy bloku try/catch do obsługi każdego z 3 typów błędów. Podobny kod można wykorzystać do obsługi błędów w przypadku dowolnej klasy interfejsu Maps 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); } } // ... }