Autor | Zpráva | ||
---|---|---|---|
Ofi Profil |
#1 · Zasláno: 5. 7. 2010, 22:09:26 · Upravil/a: Ofi
Zdravím mám takový problém, v některých třídách používám type hinting, uvedu příklad:
public function insertObject(AbstractDObject $object) { // kód } problém je v tom, že když je zadán špatný argument tak mi to vypíše tuto chybu: "Catchable fatal error: Argument 1 passed to Database::insertObject() must be an instance of AbstractDObject, string given, called in D:\my_web_apps\easy_query\index.php on line 24 and defined in D:\my_web_apps\easy_query\Database.php on line 97" což by samo o sobě nebyl problém, jenže já bych jí skutečně potřeboval "zachytit" (catch) a provést opravný kód... ten zrádný problém je v tom, že tahle "catchable - zachytitelná" chyba se mi nedaří zachytit... žádná formulace try {} catch() {} mě nedobrala kýženého výsledku.. mohl by mi někdo poradit? třeba už jste se s tímto někdo setkal :) díky předem... P.S. toho názvu "easy query" si nevšímejte, je to vlastní knihovna kterou v současné době právě modifikuji, vylepšuji... |
||
Majkl578 Profil |
#2 · Zasláno: 5. 7. 2010, 22:12:30
PHP chybu nelze zachytit pomocí try...catch.
Řešením může být až následná validace v metodě: public function insertObject($object) { if (!($object instanceof AbstractDObject)) { throw new InvalidArgumentException('blahblah'); } // kód } |
||
Nox Profil |
#3 · Zasláno: 5. 7. 2010, 22:44:32
Majkl578:
„PHP chybu nelze zachytit pomocí try...catch.“ leda pomocí set_error_handler volat funkci co hodí výjimku... měl sem pocit že o tom psal Vrána, ale nenašel jsem to u něj |
||
Ofi Profil |
#4 · Zasláno: 5. 7. 2010, 23:05:33
reaguji na Majkl578:
Díky, je to jednou z variant a pokud nebude jiná možnost jak chybové hlášení efektivně "ovládnout" tak mi nezbyde nic jiného než ji také použít. reaguji na Nox: Díky za tip. Podívám se na to. a případně pohledám zase na netu. ;) |
||
Časová prodleva: 14 let
|
0