Здравствуйте. В коде надо отловить исключение, если метод у объекта не существует.
Пробовал так:
try {
$value = $obj->method1();
} catch (Exception $e) {
$value = $obj->method2();
}
Но так почему то исключение не перехватывается.
Смотрел пошагово выполнение кода - в итоге в HttpKernel выполнение кода сразу переходит на finaly без выбрасывания исключения.
HttpKernel.php
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response
{
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
$this->requestStack->push($request);
try {
return $this->handleRaw($request, $type);
} catch (\Exception $e) {
if ($e instanceof RequestExceptionInterface) {
$e = new BadRequestHttpException($e->getMessage(), $e);
}
if (false === $catch) {
$this->finishRequest($request, $type);
throw $e;
}
return $this->handleThrowable($e, $request, $type);
} finally {
$this->requestStack->pop();
}
}
Вопрос как все-таки обойти такое поведение? Насколько я понимаю надо чтобы handle() запускался с параметром $catch=false. Может есть какой-то способ это сделать именно для конкретного метода контроллера? Или еще какой-то способ поимки исключения.
Спасибо.