이 페이지에서는 Maps JavaScript API 및 Place 클래스를 사용할 때 오류를 처리하는 방법을 설명합니다.
Google Maps JavaScript API는 오류에 다음 클래스를 사용합니다.
-
MapsNetworkError
은 웹 서비스의 네트워크 오류를 나타냅니다 (RPCStatus 오류 포함 가능). -
MapsRequestError
은 웹 서비스의 요청 오류를 나타냅니다 (즉, HTTP의 4xx 코드와 동일). -
MapsServerError
은 웹 서비스의 서버 측 오류를 나타냅니다 (즉, HTTP의 5xx 코드와 동일).
MapsNetworkError
, MapsRequestError
, MapsServerError
클래스는 지도 핵심 라이브러리에 속합니다.
라이브러리에 대해 자세히 알아보세요.
이러한 각 클래스에는 다음 속성이 포함됩니다.
code
속성은 오류 유형을 식별하고 endpoint
속성은 오류를 반환한 엔드포인트를 식별합니다 (예: PLACES_DETAILS
). MapsNetworkError
는 Error
의 하위 클래스이므로 name
및 message
를 비롯한 다른 속성도 사용할 수 있습니다.
다음 스니펫은 지도 오류 메시지의 구조를 보여줍니다.
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
를 제외한 전체 오류 문자열이 포함됩니다.
다음 스니펫은 장소 클래스를 사용할 때 오류 처리를 보여줍니다. 이 예에서는 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); } } // ... }