Autor Zpráva
CZKos
Profil *
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
IMHO to je dobré řešení.
Kcko
Profil
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 *
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
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: