Я пытаюсь выполнить этот Пример № 1 от этой страницы: http://php.net/manual/en/language.exceptions.php
getMessage(), "\n";
}
// Continue execution
echo "Hello World\n";
?>
Однако вместо желаемого вывода я добираюсь:
0.2
Fatal error: Uncaught exception 'Exception' with message 'Division by zero.'
in xxx:
7 Stack trace: #0 xxx(14): inverse(0) #1 {main} thrown in xxx on line 7
Среда разработчика, которую я использую, UniServer 3.5
с PHP 5.2.3
Может быть, попробуйте отключить определенные 3-й партийные расширения, которые вы могли бы установить? http://bugs.php.net/bug.php?id=41744
Мои первые, хотя у вас есть опечатка во имя исключения, которое вы ловите / бросают, но если ваш код точно такой же, я не уверен, что именно происходит.
Попробуйте следующую модификацию исходного скрипта и вставьте ваши результаты. Это поможет диагностировать вашу проблему немного лучше.
<?php
//set up exception handler to report what we didn't catch
function exception_handler($exception) {
if($exception instanceof MyException) {
echo "you didn't catch a myexception instance\n";
} else if($exception instanceof Exception) {
echo "you didn't catch a exception instance\n";
} else {
echo "uncaught exception of type: ".gettype($exception)."\n";
}
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
//install the handler
set_exception_handler('exception_handler');
class MyException extends Exception {
}
function inverse($x) {
if (!$x) {
throw new MyException('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (MyException $e) {
echo 'Caught myexception: ', $e->getMessage(), "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
?>