Autor Zpráva
p360t
Profil *
Mám projekt, ktorý spracúva číselné údaje, vyhodnocuje ich, radí do tabuliek atď. Všetky číselné údaje sú v databázi. Je tam aj jeden špeciálny prípad, tzv. vzorec. Slúži na vykonávanie matematických výpočtov medzi jednotlivými údajmi.

V týchto vzorcoch potrebujem ošetriť jednu vec - delenie nulou. V zásade sa všetky chyby syntaxe (neuzavreté zátvorky, zlá desatiná čiarka, resp. bodka, ...) vyriešiť dajú jednotným chybovým hlásením, avšak delenie nulou medzi ne nechcem dať (a ani to nefunguje, zobrazí sa aj chybové hlásenie PHP stroja, aj chybové hlásenie mojej aplikácie).

Jedno riešenie mám, operátor na potláčanie chýb @, ale nie je to ideálne, pretože sa potom vypíše len všeobecné chybové hlásenie mojej aplikácie a ja by som to veľmi rád nejak odlíšil.

Vzorce sa vyhodnocujú funkciou eval(), to je vlastne ekvivalentné normálnemu spusteniu ako v bežnom PHP kóde.

Ak by ste k tomu niečo vedeli, bol by som rád za vaše postrehy, nápady či riešenia.
Ni7R0
Profil
Vytvořte si svůj error handler (funkce set_error_handler() ) a pomocí něj pak diagnostikujte chyby. Praktické je na to využít try-catch bloků, pokud jedete na PHP 5.
TFSi
Profil
Použil bych něco jako:
if($b === 0) exit('Dělím nulou');

else $c = $a/$b;
Ni7R0
Profil
TFSi
Tohle asi nepůjde, protože je to kompletní matematický vzorec, nejsou to jednotlivé proměnné. Myslím, že by na tohle řešení přišel p360t sám :)
TFSi
Profil
Ni7R0
Tak to potom jo. Já jsem to z popisu (viz ... Všetky číselné údaje sú v databázi. ...) pochopil tak, že počítá s proměnnými s hodnotami z databáze. Tudíž by se dalo ještě před provedením výpočtu provést rozlišení, zda je dělitel (nebo jak se tomu říká) nula a podle toho se zařídit ... :/
Takže asi potom už jenom ten vlastní error handler ...

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:

0