Autor Zpráva
mila
Profil
Existuje nějaký jednoduchý způsob, jak zavolat příkaz, a pak zjistit, jestli vyhodil nějakou chybu?

Potřebuji zjistit, zda parsování .ini souboru proběhlo v pořádku. Ono to vyhodí warning, pokud ne, ale vždy to vrací pole s tím, co se podařilo projít.

Lze si zaregistrovat error handler, to je ale s kanónem na vrabce...
Hugo
Profil
Zapni si error_reporting na nejvyssi citlivost a oznami ti to kazdou chybu.

<?php
error_reporting(E_ALL);

...

?>
mila
Profil
Nepotřebuji, aby to chybu vypsalo na výstup. Potřebuji po zpracování toho ini souboru vědět, zda se povedlo, a podle toho se dále zachovat.

Vlastně chci při chybě ukončit skript. Pokud by byl ini file přečten špatně, mohlo by se stát, že uživatel uvidí něco, co nemá.

Tzn. by stačilo, aby se warning zachoval jako error - skončil.


Mimochodem, měl jsem error handler, který chytil warning a hodil error. Fungovalo to docela dobře. Problém byl, že pokud vlastní error handler hodí chybu, je volán deafultní php (ten co vidíme, když nic nenastavujem).
Je to logické, brání to zacyklení. Navíc to umožňuje oštřit nějak chybu, a pak nechat udělat php normální práci.

Ale já error handler mám vlastní. Ten chytá chyby a při fatální pošle hlavičku 503. Ten je ale obejet, pokud chyba přišla v jiném error handleru (nepošle se tedy uživateli omluva).

(doufám, že jsem to nenapsal moc složitě)
Hugo
Profil
To uz zalezi na tom jak ten ini soubor parsujes. Pokud pouzivas nejakou tridu, tak to muzes osetrit napr. pomoci vyjimek (exceptions).
mila
Profil
parse_ini_file - fce php
Hugo
Profil
Mozna ti pomuze toto

http://de3.php.net/manual/en/function.parse-ini-file.php#36476
mila
Profil
Díky, v manuálu jsem hledal, jistě bych našel i fci, která toto ošetří, ale je to zbytečný kód navíc.

Teď mi to funguje, jen musím předtím a potom zavolat nějakou fci, kterou jsem si napsal, aby testovala, zda byla chyba. Využívá právě set_error_handler(). Není to nic dlouhého, přesto mi to přijde neelegantní.
Používat vlastní parse_ini_file není ale o nic hezčí.

Proto jsem se ptal, zda mi neuniká nějaký jednoduchý způsob, jak toto zjistit.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0