בדף הזה מוסבר איך לטפל בשגיאות כשמשתמשים ב-Maps JavaScript API ובמחלקה Place.
ב-Google Maps JavaScript API נעשה שימוש במחלקות הבאות לשגיאות:
-
MapsNetworkError
מייצג שגיאת רשת משירות אינטרנט (יכול לכלול שגיאות RPCStatus). -
MapsRequestError
מייצג שגיאת בקשה משירות אינטרנט (כלומר, המקבילה לקוד 4xx ב-HTTP). -
MapsServerError
מייצג שגיאה בצד השרת משירות אינטרנט (כלומר, המקבילה לקוד 5xx ב-HTTP).
המחלקות MapsNetworkError
, MapsRequestError
ו-MapsServerError
שייכות לספריית הליבה של Maps.
מידע נוסף על ספריות
כל אחת מהמחלקות האלה מכילה את המאפיינים הבאים:
המאפיין code
מזהה את סוג השגיאה, והמאפיין endpoint
מזהה את נקודת הקצה שהחזירה את השגיאה (לדוגמה, PLACES_DETAILS
). מכיוון ש-MapsNetworkError
הוא מחלקת משנה של Error
, זמינים גם מאפיינים אחרים, כולל name
ו-message
.
בקטע הקוד הבא מוצג המבנה של הודעת שגיאה ב-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 ---> ... ]
השגיאה הגולמית כוללת את כל מה שנמצא במחרוזת השגיאה. error.message
כולל את כל מחרוזת השגיאה, לא כולל error.name
.
בקטע הקוד הבא מוצגת דוגמה לטיפול בשגיאות כשמשתמשים במחלקה Place. בדוגמה הזו נעשה שימוש בבלוק try/catch כדי לטפל בכל אחד משלושת סוגי השגיאות. אפשר להשתמש בקוד דומה כדי לטפל בשגיאות בכל מחלק�� של 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); } } // ... }