obsłużyć wyjątki w krótkim sposób podobny do eventHandling w JavaScript. Zdarzenie pęcznieje w górę od konkretnej do ogólnej. Po dojściu do programu startowego wyjątek utracił znaczenie kodu i powinien po prostu zostać przechwycony w celu zalogowania i zakończenia aplikacji.
W międzyczasie wiele rzeczy może się zdarzyć
callstack:
- start Lunch
- Eat Apple (Przed tym kodem, jabłko został kupiony jako lunch)
- Sink zęby jabłko
Podczas jedzenia jabłka pojawił się robak:
throw NausiaException('I found a bleeding worm...');
Eat zakres Jabłko łapie
catch(Exception $e)
wyjątkiem, ponieważ w tym zakresie możemy wrócić jabłko do sklepu i krzyczeć na menedżera. Ponieważ nic bardziej użytecznego nie można powiedzieć o wystąpieniu, wywoływane jest wywołanie, ponieważ nie udało się zjeść jabłka.
Coś mogłoby odeszłaś inny Jednakże, jeśli kierownik sklepu odmówił zwrotu, można owinąć wyjątek
throw new RefundFailedException('The manager is a cheap skate', RefundFailedException::REFUSED, $e)
start obiad Zakres start zakres obiad chce wyrzucić złe obiad
try {
//Start lunch
} catch (Exception $e) {
switch (true) {
case $e instanceof NausiaException:
case $e instanceof RefundFailedException:
//Throw lunch away
break;
}
}
Celem jest przeniesienie kontroli do zewnętrznego 'catch' po uruchomieniu wewnętrznego. "Zwrot" pomija go całkowicie. – cHao