情况:
//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);
}
Run Code Online (Sandbox Code Playgroud)
getFrostTrollType加载好,getForestTrollType也应加载好,但在此之前,这是一个问题,getRandomBrokenTrollType()故意不存在,然后我在控制台中看到消息:
Frost
Test 1
Test 2
TROLLING
RandomBroken
Test 1
[Doctrine\ORM\EntityNotFoundException]
Entity was not found.
//[EXIT FROM SCRIPT]
troll@troll-machine ~/trollSandbox/ $ _
Run Code Online (Sandbox Code Playgroud)
它应该是:警告:TROLL ENTITY不存在.然后继续; 但它不会发生
如何检查对象的方法的存在?
Jay*_*eth 20
如果你想捕获任何异常,你应该在"异常"之前使用反斜杠.
例如:
try{
//do stuff here
}
catch(\Exception $e){
error_log($e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
如果不使用反斜杠,则不会捕获异常.这是由于PHP/Symfony中如何使用命名空间.
Doctrine 抛出的 Exception 被调用Doctrine\ORM\EntityNotFoundException并且您正在捕获EntityNotFoundException.
那是不同的,命名空间很重要。
要对此进行调试,请Exception改为捕获并观察实际异常的类型。然后更换它。
| 归档时间: |
|
| 查看次数: |
22548 次 |
| 最近记录: |