Fehlerbehandlung

Auf dieser Seite wird beschrieben, wie Sie Fehler bei der Verwendung der Maps JavaScript API und der Place-Klasse behandeln.

Für die Google Maps JavaScript API werden die folgenden Klassen für Fehler verwendet:

  • MapsNetworkError steht für einen Netzwerkfehler eines Webdienstes (kann RPCStatus-Fehler enthalten).
  • MapsRequestError steht für einen Anforderungsfehler von einem Webdienst (d.h. das Äquivalent eines 4xx-Codes in HTTP).
  • MapsServerError steht für einen serverseitigen Fehler eines Webdienstes (entspricht einem 5xx-Code in HTTP).

Die Klassen MapsNetworkError, MapsRequestError und MapsServerError gehören zur Maps Core Library. Weitere Informationen zu Bibliotheken

Jede dieser Klassen enthält die folgenden Attribute:

Die code-Property gibt den Fehlertyp an. Die endpoint-Property gibt den Endpunkt an, der den Fehler zurückgegeben hat, z. B. PLACES_DETAILS. Da MapsNetworkError eine Unterklasse von Error ist, sind auch andere Properties wie name und message verfügbar.

Das folgende Snippet zeigt die Struktur einer Maps-Fehlermeldung:

  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 --->                ... ]
  

Der Rohfehler umfasst alles im Fehlerstring. error.message umfasst den gesamten Fehlerstring ohne error.name.

Das folgende Snippet zeigt die Fehlerbehandlung bei Verwendung der Place-Klasse. In diesem Beispiel wird ein Try/Catch-Block verwendet, um die drei Fehlertypen zu verarbeiten. Ähnlicher Code kann verwendet werden, um Fehler für jede Maps JavaScript API-Klasse zu verarbeiten.

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);
        }
    }
    // ...
}