Пробуйте/Ловите блок в PHP, не ловя Исключение

Я пытаюсь выполнить этот Пример № 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

90
задан Eric Leschinski 13 March 2014 в 19:14
поделиться

2 ответа

Может быть, попробуйте отключить определенные 3-й партийные расширения, которые вы могли бы установить? http://bugs.php.net/bug.php?id=41744

1
ответ дан 24 November 2019 в 06:54
поделиться

Мои первые, хотя у вас есть опечатка во имя исключения, которое вы ловите / бросают, но если ваш код точно такой же, я не уверен, что именно происходит.

Попробуйте следующую модификацию исходного скрипта и вставьте ваши результаты. Это поможет диагностировать вашу проблему немного лучше.

<?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';
?>
6
ответ дан 24 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: