Я думаю, что это немного странно.
Я запускаю скрипт, который запускает программу.Я храню последний вывод в переменной.Если программа или мой сценарий по разным причинам вызывают исключение в сценарии, я перехватываю это исключение, добавляю журнал ошибок и перебрасываю его.Несколько уровней выше я снова ловлю его, записываю общее сообщение и перебрасываю его, чтобы завершить работу сценария.
Когда умирает командная строка PHP, кажется, что в трассировке стека выводится только внутреннее сообщение об исключении,потому что нет никакого упоминания о моем сообщении.Он даже говорит Uncaught «Exception», которое является внутренним исключением, которое я выбрасываю при тестировании, в то время как внешнее исключение является пользовательским типом.getMessage () возвращает полное сообщение, как и ожидалось.
PHP Fatal error: Uncaught exception 'Exception' with message 'This is a test error message.' in /home/x/Documents/project/file.php:14
Трассировка стека:
Я сошел с ума, это ожидаемое поведение?Должен ли я идти спать?
ОБНОВЛЕНИЕ :
На уровне «корень» у меня есть это:
catch(Exception $e)
{
$access->logError($e->getMessage());
print 'Actual error: ' . $e->getMessage() . "\n";
print get_class($e);
throw $e;
}
print-Statement печатаетреальное сообщение, которое я ожидаю, совокупность.throw $ e возвращает внутреннее сообщение об исключении ... print get_class($e)
печатает CustomException ...
Это объявление CustomException:
class CustomException extends Exception
{
function __construct($message, $prev)
{
parent::__construct($message, -1, $prev);
}
}
Вот как оно используется:
catch(Exception $e)
{
$message = $e->getMessage() . $logString;
$resultReporter->reportError($message);
$e = new CommandException($message, $e);
$throw e;
}