Marcin Mierzwa

Marcin Mierzwa PHP Developer, It
Production

Temat: Wywołanie catch(Exception $e)

Witam wszystkich,

Czy ktoś może mi odpowiedzieć jaki mechanizm czy wzorzec projektowy odpowiada za sytuację poniżej ?
Rzucam wyjątkiem klasy TestException (wywołanie funckji test()).
W bloku 'catch' wstawiam obiekt klasy Exception, nie TestException:
catch(Exception $e).
Mimo to moge wywołać na obiekcie $e metodę klasy TestException:
var_dump($e->get());
Dlaczego ?
TestException dziedziczy po Exception, a nie na odwrót i normalnie nie można
wywołać metody klasy podrzędnej na obiekcie klasy nadrzędnej.

class TestException extends Exception {
public function get() {
echo 'Metoda get() klasy TestException';
}
}

function test() {
throw new TestException('test');
}

try {
test();
} catch (Exception $e) {
var_dump($e->get());
}Ten post został edytowany przez Autora dnia 28.08.14 o godzinie 13:42
Tomasz Zadora

Tomasz Zadora programuję

Temat: Wywołanie catch(Exception $e)

Ponieważ jako $e dostajesz obiekt klasy TestException, to, że w bloku catch określisz jedynie klasę Exception nie ma znaczenia, obiekt $e nie zostanie "zredukowany" lub pozbawiony metod klasy TestException, podobnie kompilator nie rzuci żadnym błędem bo PHP jest językiem dynamicznym.Ten post został edytowany przez Autora dnia 28.08.14 o godzinie 15:59

Następna dyskusja:

try catch z SOAP (z logowan...




Wyślij zaproszenie do