Autor | Zpráva | ||
---|---|---|---|
CZKos Profil * |
#1 · Zasláno: 20. 12. 2008, 20:46:51
Ahoj, do teď jsem nepoužíval exceptions v php , ale nyní je použít chci. Mám ale např. takovýhle kus kódu:
try{ $this->isTemplate($controllerID); $this->isView($controllerID); }catch(Exception $e){ echo $e->getMessage(); } function isTemplate($template){ ...... throw new Exception("Template doesn't exist."); } To mi funguje správně. Jen bych potřeboval, aby když se objeví výjimka skončil celý skript a vypsala se pouze chybová hláška. Jde toto nějak vyřešit pomocí výjimek? Mohu napsat : }catch(Exception $e){ echo $e->getMessage(); exit; } Předem děkuju za odpověď :) ale to se mi nelíbí a myslím že to ani není dobré řešení. |
||
Měsíček Profil |
#2 · Zasláno: 20. 12. 2008, 20:48:35
IMHO to je dobré řešení.
|
||
Kcko Profil |
#3 · Zasláno: 20. 12. 2008, 21:34:05 · Upravil/a: Kcko
Kdyz to potrebujes resit takhle tak si do staticke tridy ukladej chyby
neco jako Handler::getInstance()->saveError("NejakyError"); a tam kde probiha nejaka akce se na to zeptat a pripadne ukoncis skript nebo udelas cosi libovolneho |
||
DoubleThink Profil * |
#4 · Zasláno: 20. 12. 2008, 23:25:23
„IMHO to je dobré řešení.“
Imho není. „Kdyz to potrebujes resit takhle tak si do staticke tridy ukladej chyby“ Pak ale nevyužíváš výhod vyjímek - jejich průchod objektovým stromem. CZKos To, co chceš ty, by se asi dalo nazvat nezachycená vyjímka. Takže ji nezachytávej. Případně, pokud potřebuješ vyjímky rozlišovat, je zachyť, zkontroluj a některé pošli dál (throw $e). Viz také set_exception_handler(). |
||
joe Profil |
#5 · Zasláno: 20. 12. 2008, 23:38:39
CZKos
Na tom místě, kde zachytíš vyjímku u které chceš aby "to" skončilo, bych přesměroval pomocí header(); DoubleThink „Pak ale nevyužíváš výhod vyjímek - jejich průchod objektovým stromem.“ Nevyužívá, ale pokud to na dané vyjímce chce zastavit, proč by měl průchod zrovna v tomto případě používat. |
||
CZKos Profil * |
#6 · Zasláno: 21. 12. 2008, 13:42:55
Děkuji za odpovědi, zvláště DoubleThink-ovi. Zdá se, že nezachycená výjimka je přesně to , co jsem hledal. Ještě bych se chtěl zeptat jak si nejlépe zapamatovat poslední výjimku. Napsal jsem si zatím jednoduchý exception handler ale později bych potřeboval něco jako:
$exceptionHandler = new ExceptionHandler(); $lastException = $exceptionHandler->getLastException(); echo $lastException->getMessage(); Díky |
||
Časová prodleva: 15 let
|
0