توضّح هذه الصفحة كيفية التعامل مع الأخطاء عند استخدام 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
.
يعرض المقتطف التالي بنية رسالة خطأ في "خرائط Google":
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); } } // ... }