Исключение было выдано в:
файл: /var/www/virtual/account/htdocs/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/MappingException.php
строка: 93
Если вы хотите увидеть, что произошло раньше (причину), вы можете проверить трассировку своего кода.Я не вижу весь ваш код, но:
Если у вас есть исключение Uncaught , даже если вы завернули свой код блоком try catch, здесь есть только два основных способа:
1.Вы не поймете исключение.Возможно, из-за того, что не удалось избежать исключения, которое вы хотите перехватить, или исключение отличается от того, которое вы пытаетесь перехватить.Или вы перебрасываете его (вероятно, ваш случай)
попробуйте этот способ отлова с помощью \Exception
try {
// application init
$app->init();
} catch (\Exception $e) {
error_log("MappingException: " . $e->getTraceAsString());
//no throw
}
, если это работает, вы можете изменить свой код, чтобы иметь такойспособ отлова исключений
try {
// application init
$app->init();
//note backslash
} catch (\Doctrine\Common\Persistence\Mapping\MappingException $e) {
error_log("MappingException: " . $e->getTraceAsString());
//no throw
} catch (\Exception $e) {
error_log("GeneralExcpeption: " . $e->getTraceAsString());
//no throw
}
Вы всегда отлавливаете исключения, начиная от самых специфических (в вашем случае доктрины) до менее специфичных (\ Exception)
Возможно, работать будет намного проще getTrace , чем с getTraceAsString (), чтобы увидеть порядок выполнения, который привел к исключению.но сделайте себе одолжение и ограничьте количество отображаемых записей, то есть следующим образом:
try {
// application init
$app->init();
//note backslash
} catch (\Doctrine\Common\Persistence\Mapping\MappingException $e) {
var_export(array_slice($e->getTrace(), 0, 5));
//no throw
} catch (\Exception $e) {
var_export(array_slice($e->getTrace(), 0, 5));
//no throw
}
и вернитесь назад к тому месту, где вы использовали Client
, если число 5 недостаточно, затем увеличьте его до 10,15 и т. Д., Чтобы иметь возможность вернуться назад, где выполнение было до того, как произошло исключение.Каждая запись имеет номер файла и строки, поэтому вы сможете воссоздать то, что произошло.
Посмотрите на свой код, где у вас есть Client
, и убедитесь, что вы правильно использовали этого Клиента в пространстве имен, которым вы являетесь.,Если в верхней части php-файла, где вы используете Client
, есть ключевое слово namespace
, вы должны быть уверены, что Client
является частью этого namespace
или использовать \Client
для выхода из пространства имен и обработки имениClient
как будто не было пространства имен.
2.Исключение выдается за пределами вашего блока try catch (возможно, нет)
Вы можете попытаться перехватить исключения, которые находятся за пределами вашего блока try / catch, зарегистрировав собственную функцию с помощью обработчика.Сложность заключается в том, что это необходимо сделать до того, как исключение будет выдано так идеально в первой строке кода php.Обратите внимание, что это может отличаться от первой строки, которую вы написали, например, это может быть приложение bootstrap.php.Вы можете проверить, что является вашей первой строкой приложения, запустив приложение с Xdebug в режиме отладки.
вот пример помещения обработчика исключений:
<?php
function exception_handler($e) {
echo "MyUncaughtException: " , $e->getMessage(), "\n";
}
set_exception_handler('exception_handler');