Autor | Zpráva | ||
---|---|---|---|
Dusann Profil |
catch (Exception $e) => Čo znamená z funkčného hľadiska to slovo pred premennou $e ?
Je to iba nejaký ľubovoľný názov pre pomenovanie catch bloku ktorý sa k ničomu neviaže ? V PHP dokumentácii som nenašiel nič kde by bola syntax catch bloku popísaná...díky |
||
juriad Profil |
Each try must have at least one corresponding catch block. Multiple catch blocks can be used to catch different classes of exceptions.
[...] The thrown object must be an instance of the Exception class or a subclass of Exception. Trying to throw an object that is not will result in a PHP Fatal Error. http://www.php.net/manual/en/language.exceptions.php # Definuji tři výjimky: class MyException extends Exception {} class MyFirstException extends MyException {} class MySecondException extends MyException {} try { # vyhodím nějakou výjimku throw new Exception(); throw new MyException(); throw new MyFirstException(); throw new MySecondException(); } catch (MyFirstException $e) { echo "Zachycena chyba typu MyFirstException"; } catch (MySecondException $e) { echo "Zachycena chyba typu MySecondException"; } catch (MyException $e) { echo "Zachycena chyba typu MyException nebo potomek MyException"; } catch (Exception $e) { echo "Zachycena chyba typu Exception nebo potomek Exception"; } Výjimka typu X je zachycena v prvním bloku, který chytá X nebo nějakého předka X. |
||
Tori Profil |
Výjimky jsou normální třídy, které mají za předka
Exception nebo jejího potomka. Tohle je požadovaný typ výjimky (= název její třídy), který se má tím blokem catch zachytit. Můžete tak reagovat na různé typy výjimek různým způsobem:
try { // .... nějaký kód } catch (InvalidArgumentException $e) { echo "Nějaká funkce dostala nesprávná data: ".$e->getMessage(); } catch (LogicException $e) { echo "Někde v logice programu mám nesmysl: ".$e->getMessage(); } catch (Exception $e) { // zachytí všechny ostatní výjimky, protože je předkem všech echo "Vyhozena výjimka: ".$e->getMessage(); } try { // ... nějaký kód } catch (Exception $e) { if (get_class($e) === 'InvalidArgumentException') echo 'Nesprávná data: '; elseif (get_class($e) === 'LogicException') echo 'Logická chyba: '; else echo 'Jiná výjimka: '; echo $e->getMessage(); } |
||
Dusann Profil |
Tori:
Díky za prehľadnú a ľahko pochopiteľnú ukážku, teraz už mi je to úplne jasné :) Ak by takýto zrozumiteľný príklad bol v PHP dokumentácii ani by som tento dotaz nemusel položiť :) |
||
Časová prodleva: 11 let
|
0