Wie Try Catch in symfony
Situation:
//trollCommand.php
[...]
foreach ($trolltypes as $type) { //$type=={"Frost","RandomBroken","Forest"}
try {
$output->writeln($type);
$troll={"get".$type."TrollType"}();
$output->writeln("TEST 1");
$troll->__load();
$output->writeln("TEST 2");
} catch (EntityNotFoundException $e) {
$output->writeln("WARNING: TROLL ENTITY DOES NOT EXIST.");
continue;
}
$output->writeln("TROLLING");
do_something_with_troll($troll);
}
getFrostTrollType Lasten ok, getForestTrollType geladen werden soll, auch ok, aber vorher ist es ein problem, getRandomBrokenTrollType() absichtlich nicht vorhanden, und dann sehe ich die Meldung in der Konsole:
Frost
Test 1
Test 2
TROLLING
RandomBroken
Test 1
[Doctrine\ORM\EntityNotFoundException]
Entity was not found.
//[EXIT FROM SCRIPT]
troll@troll-machine ~/trollSandbox/ $ _
sollte es werden: WARNUNG: TROLL ENTITÄT NICHT VORHANDEN ist. und dann weiter; aber es geschieht nicht
Wie um zu überprüfen, bestehend aus einer Objekt-Methode?
- Was nicht passiert? Die Warnung oder die weiter? Oder keines von beiden?
- Alle catch-block
Du musst angemeldet sein, um einen Kommentar abzugeben.
die Ausnahme, die ausgelöst durch Lehre genannt wird
Doctrine\ORM\EntityNotFoundException
und Sie fangenEntityNotFoundException
.Das ist ein Unterschied, den namespace Angelegenheiten.
Debuggen, fangen
Exception
statt und beobachten Sie den Typ der aktuellen Ausnahme. dann ersetzen Sie es.werden, wenn Sie versuchen zu fangen-ohne Ausnahme-sollten Sie einen umgekehrten Schrägstrich vor "Ausnahme".
E. g.:
Wenn Sie nicht mit einem backslash, wird die Ausnahme nicht abgefangen werden. Das liegt daran, wie namespaces werden in PHP /Symfony.
Ausnahme Typ - \Doctrine\ORM\EntityNotFoundException
Vergessen Sie nicht ab "\"
Beispiel -