Если вы посмотрите исходный код Symfony\Component\HttpKernel\Exception\NotFoundHttpException
, вы обнаружите, что он расширяет Symfony\Component\HttpKernel\Exception\HttpException
, если вы посмотрите на объявление класса, вы увидите, что $ statusCode является частным, но у него есть метод получения
class HttpException extends \RuntimeException implements HttpExceptionInterface
{
private $statusCode;
private $headers;
public function __construct(int $statusCode, string $message = null, \Throwable $previous = null, array $headers = [], ?int $code = 0)
{
$this->statusCode = $statusCode;
$this->headers = $headers;
parent::__construct($message, $code, $previous);
}
public function getStatusCode()
{
return $this->statusCode;
}
//...
}
Таким образом, вам просто нужно выполнить $exception->getStatusCode()
, чтобы получить код состояния (404 в вашем случае), хотя вы должны выполнить проверку, чтобы убедиться, что ваш throwable реализует HttpExceptionInterface, потому что это может быть не всегда, и поэтому метод не будет существовать, и вы получите фатальную ошибку
if ($exception instanceof \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface) {
$code = $exception->getStatusCode();
}