---
title: "Výnimky — Credits for Laravel | Roundly"
description: "Výnimky balíka a výnimky z money-for-laravel, ktoré balík prepúšťa — kedy vznikajú a čo nesú."
url: https://roundly-consulting.com/sk/open-source/navody/credits-for-laravel/vynimky
language: sk
---

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

[Credits for Laravel](https://roundly-consulting.com/sk/open-source/navody/credits-for-laravel.md)

# Výnimky

Balík vyhadzuje dve vlastné výnimky so spoločným základom, niekoľko výnimiek z money-for-laravel prepúšťa bez obalenia, pri chybnom nastavení vyhodí InvalidConfigurationException z package-toolkit a vo vašich vlastných transakciách k vám môže doraziť DeadlockException z Laravelu:

| Výnimka | Kedy vznikne |
| --- | --- |
| `CreditsException` | Základná trieda (RuntimeException) pre InsufficientCreditsException a BucketNotDenominatedException — zachyťte ju, ak chcete ošetriť akékoľvek zlyhanie kreditov. |
| `InsufficientCreditsException` | Odpis by skupinu dostal pod minimum\_balance a prečerpanie nie je povolené. Nesie $creditable, $requested (so znamienkom), $available (samotný zostatok skupiny) a $minimum (hranicu, ktorú ochrana uplatnila, takže minúť sa dalo $available - $minimum); správa z credits::messages.insufficient, pri nenulovej hranici z credits::messages.insufficient\_above\_minimum. |
| `BucketNotDenominatedException` | Volanie pre Money — money(), addMoney(), deductMoney(), modifyMoney() alebo formatMoney() na scope, prípadne creditsBalanceMoney(), modifyCreditsMoney() či formatCreditsBalance() z traitu — na skupinu, ktorá nie je v credits.currencies. Nesie $bucket (vyhodnotený názov); správa z credits::messages.not\_denominated. |
| `InvalidArgumentException` | add() alebo deduct() (či addMoney() / deductMoney()) dostali zápornú sumu — na zmenu so znamienkom použite modify(). |
| `CurrencyMismatch` | Z money: modifyCreditsMoney() dostala Money v inej mene (kód + exponent). |
| `AmountOverflow` | Z money: hodnota sa nezmestí do 64-bitovej knihy pohybov so znamienkom — suma Money, zostatok skupiny, ktorý by zmena vytvorila, alebo rozdiel setTo() (nič sa nezapíše), prípadne čítaný súčet naprieč skupinami či historický zostatok. |
| `UnknownCurrency` | Z money: credits.currencies priraďuje skupine kód, ktorý register nepozná. |
| `InvalidMoneyConfiguration` | Z money: credits.currencies má chybný tvar alebo credits.rounding nepomenúva žiadny režim zaokrúhľovania. |
| `InvalidAmount` | Z money: škála zobrazenia nad 36 desatinných miest. |
| `InvalidConfigurationException` | Z package-toolkit: hodnota v konfigurácii má chybný tvar — model, ktorý nie je Credit ani jeho podtrieda, neznámy key\_type alebo primary\_key\_type, allow\_overdraft, ktoré nie je boolean, minimum\_balance, ktoré nie je celé číslo, default\_bucket, ktorá nie je reťazec, scale mimo 0–36 alebo položka modifiable, ktorú nemožno zavolať. Správa uvádza názov kľúča. |
| `DeadlockException` | Z Laravelu: vo vašej vlastnej DB::transaction() na Postgres pri REPEATABLE READ alebo SERIALIZABLE súbežná zmena toho istého vlastníka (SQLSTATE 40001). Nič sa nezapíše — zopakujte celú transakciu. |

## Ošetrenie

Zachyťte konkrétne prípady, na ktoré viete reagovať, a potom siahnite po základnej triede:

```php
use RoundlyConsulting\Credits\Exceptions\CreditsException;
use RoundlyConsulting\Credits\Facades\Credits;
use RoundlyConsulting\Credits\Exceptions\InsufficientCreditsException;
use RoundlyConsulting\Money\Exceptions\AmountOverflow;
use RoundlyConsulting\Money\Exceptions\CurrencyMismatch;

try {
    Credits::for($user)->bucket('store_credit')->modifyMoney($amount, 'checkout');
} catch (InsufficientCreditsException $e) {
    // not enough in the bucket: $e->requested, $e->available, $e->minimum, $e->creditable
} catch (CurrencyMismatch | AmountOverflow $e) {
    // wrong currency, or beyond the 64-bit ledger — nothing was written
} catch (CreditsException $e) {
    // any other credits failure, e.g. BucketNotDenominatedException ($e->bucket)
}
```

Odmietnutá zmena nikdy nezanechá čiastočný zápis: ochrana pred prečerpaním aj 64-bitový limit bežia v transakcii zápisu ešte pred pridaním záznamu a kontroly meny prebehnú ešte pred jej začiatkom.

## 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/credits-for-laravel.md)
