หน้านี้อธิบายวิธีจัดการข้อผิดพลาดเมื่อใช้ 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 เพื่อจัดการข้อผิดพลาดทั้ง 3 ประเภท คุณใช้โค้ดที่คล้ายกันเพื่อจัดการข้อผิดพลาดสำหรับคลาส 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); } } // ... }