---
title: "Spracovanie chýb — Google Places for Laravel | Roundly"
description: "Jedna PlacesException s typovanými kontrolami pre rate limit, zamietnutý kľúč, neplatnú požiadavku a nedostupné API — kľúč sa v správach začierni."
url: https://roundly-consulting.com/sk/open-source/navody/google-places-for-laravel/spracovanie-chyb
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Google Places for Laravel](https://roundly-consulting.com/sk/open-source/navody/google-places-for-laravel.md)

# Spracovanie chýb

Chyby vyhadzujú RoundlyConsulting\\GooglePlaces\\Exceptions\\PlacesException s typovanými metódami, podľa ktorých rozlíšite, čo zlyhalo:

```php
use RoundlyConsulting\GooglePlaces\Exceptions\PlacesException;
use RoundlyConsulting\GooglePlaces\Facades\GooglePlaces;

try {
    $predictions = GooglePlaces::autocomplete('Coffee');
} catch (PlacesException $e) {
    if ($e->isRateLimited())      { /* back off */ }
    elseif ($e->isDenied())       { /* check key / billing / enabled APIs */ }
    elseif ($e->isInvalidRequest()) { /* fix the request */ }
    elseif ($e->isUnreachable())  { /* timeout, DNS failure, refused connection */ }

    report($e); // $e->googleStatus(), $e->googleReason(), $e->googleErrorMessage()
}
```

## Kľúč sa do správ nedostane

API kľúč sa nikdy neobjaví v správe výnimky, v udalosti ani v kľúči cache. Každá správa sa začierni — chybový text od Google aj správa o zlyhaní prenosu, ktorá končí URL požiadavky, kde Geocoding API nesie svoj key=. Nastavený kľúč sa všade, kde sa objaví, skryje okrem posledných štyroch znakov a rovnako aj hodnota každého parametra key=, token= či signature= v URL; hodnota s ôsmimi a menej znakmi sa skryje celá. $e->response je surová HTTP odpoveď vrátane URL požiadavky — neserializujte ju do reportov.

## Kontroly stavu

Kontroly zjednocujú tvary chýb všetkých troch Google API a isUnreachable() odlíši zlyhanie siete od odpovede:

| Kontrola | Stavy Google |
| --- | --- |
| `isRateLimited()` | RESOURCE\_EXHAUSTED, OVER\_QUERY\_LIMIT — a vždy pri RateLimitExceededException |
| `isDenied()` | PERMISSION\_DENIED, UNAUTHENTICATED, REQUEST\_DENIED, OVER\_DAILY\_LIMIT — alebo googleReason týkajúci sa kľúča či projektu, napr. API\_KEY\_INVALID, bez ohľadu na stav |
| `isInvalidRequest()` | INVALID\_ARGUMENT, INVALID\_REQUEST — a nie je denied |
| `isUnreachable()` | Bez stavu Google — Google nebol vôbec dostupný (timeout, zlyhanie DNS, odmietnuté spojenie) |

## Detail chyby

```php
catch (PlacesException $e) {
    $e->getCode();              // HTTP status of the failed response (0 for local errors)
    $e->googleStatus();         // e.g. "PERMISSION_DENIED", "OVER_QUERY_LIMIT"
    $e->googleReason();         // e.g. "API_KEY_INVALID" — null for the Geocoding API
    $e->googleErrorMessage();   // Google's own error message, if any
    $e->isUnreachable();        // true for a timeout, DNS failure or refused connection
    $e->response;               // ?Illuminate\Http\Client\Response — raw, request URL included
}
```

## Kedy sa vyhadzuje

| Továrenská metóda | Kedy sa vyhodí |
| --- | --- |
| `fromResponse()` | Google vrátil neúspešnú odpoveď. Nesie HTTP stav, stav Google a správu. |
| `connectionFailed()` | Google nebol dostupný ani po nastavených opakovaniach — isUnreachable() vráti true. |
| `missingApiKey()` | Nie je nastavený API kľúč — vyhodí sa pred akoukoľvek HTTP požiadavkou. |
| `tooManyPrimaryTypes()` | AutocompleteQuery s viac ako 5 primárnymi typmi. |
| `tooManyRegionCodes()` | AutocompleteQuery s viac ako 15 kódmi regiónov. |
| `invalidRadius()` | Polomer NearbySearchQuery mimo 0–50000 m. |
| `sessionFinished()` | Billing session použitá znova po volaní details(). |
| `routeNotFound()` | distance() narazil na cieľ bez dostupnej trasy. |
| `RateLimitExceededException::for()` | API s rate limitom by čakalo dlhšie ako jeho max\_wait. |

## Timeouty a opakovania

Každé volanie je ohraničené hodnotami http.timeout a http.connect\_timeout. Zlyhania spojenia (timeout, DNS) sa opakujú http.retries-krát s pauzou http.retry\_delay; chyby vrátené od Google sa nikdy neopakujú — okamžite sa prejavia ako PlacesException. Oba timeouty sú celé sekundy, aspoň 1: 0 (bez timeoutu) alebo nezmysel ako five vyhodí InvalidConfigurationException, namiesto toho, aby požiadavka zostala neohraničená.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/google-places-for-laravel.md)
