Что такое PHP эквивалент Python's Try: ... Кроме: - PullRequest
5 голосов
/ 18 октября 2010

Я сильный программист на Python, но не совсем в том, что касается PHP. Мне нужно что-то попробовать, и если это не сработает, сделай что-нибудь еще.


Вот как это будет выглядеть в Python:

try:
      print "stuf"
except:
      print "something else"

Что бы это было в PHP?

Ответы [ 6 ]

7 голосов
/ 18 октября 2010

http://php.net/manual/en/language.exceptions.php

try {
    print 'stuff';
} catch (Exception $e) {
    var_dump($e);
}

Примечание: это работает только для исключений, а не ошибок.

См. http://www.php.net/manual/en/function.set-error-handler.php для этого.

5 голосов
/ 18 октября 2010
try {

    // do stuff ...

} catch (Exception $e) {

    print($e->getMessage());

}

См. http://php.net/manual/en/language.exceptions.php

1 голос
/ 18 октября 2010

Вы можете обрабатывать ошибки PHP, как если бы они были исключениями, используя set_error_handler

В этой функции обработчика ошибок вы можете выдавать различные исключения, например, в соответствии с уровнем ошибки.

Этим вы можете обработать любую ошибку (включая ошибки программирования) обычным способом.

1 голос
/ 18 октября 2010

PHP изначально не поддерживает перехват ошибок, как это делает Python, если вы не переопределите поведение по умолчанию и не установите свой собственный обработчик ошибок .PHP * try - catch был добавлен к языку только недавно в версии 5, и он может явно ловить только те исключения, которые вы указали throw.

Таким образом, в сущности, PHP различает ошибки и исключения.Ошибки не были модульными и не были доступны пользователю, как это было в Python.Я полагаю, что это связано с тем фактом, что PHP начинался как коллекция динамических веб-скриптов , со временем развивался и набирал больше функций, и лишь недавно предложили улучшенную поддержку ООП (т. Е. Версию 5);в то время как Python в основном поддерживает ООП и другую мета-функциональность.И обработка исключений с начала .

Вот пример использования (опять же, throw необходимо, иначе ничего не будет поймано):

function oops($a)
{
    if (!$a) {
        throw new Exception('empty variable');
    }
    return "oops, $a";
}

try {
    print oops($b);
} catch (Exception $e) {
    print "Error occurred: " . $e->getMessage();
}
0 голосов
/ 18 октября 2010

Предполагая, что вы пытаетесь перехватить исключения, взгляните на http://php.net/manual/en/language.exceptions.php

Вы можете попробовать что-то вроде

try {
echo "Stuff";
} catch (Exception $e) {
echo "Something Else";
}
0 голосов
/ 18 октября 2010

PHP 5 имеет модель исключения :

try {
    print 'stuff';
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
...