Php try... else
Есть ли что-то подобное в PHP для try ... else
в Python?
Мне нужно знать, правильно ли выполняется блок try, как при правильном выполнении блока, будет напечатано сообщение.
Ответы
Ответ 1
Вы можете использовать try { } catch () { }
и throw
. См. http://php.net/manual/en/language.exceptions.php
try {
$a = 13/0; // should throw exception
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
или вручную:
try {
throw new Exception("I don't want to be tried!");
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Ответ 2
PHP не имеет try/catch/else. Однако вы можете установить переменную в блоке catch, которая может быть использована для определения, была ли она выполнена:
$caught = false;
try {
// something
} catch (Exception $e) {
$caught = true;
}
if (!$caught) {
}
Ответ 3
Я думаю, что предложение "else" немного ограничено, если вам не нужны какие-либо исключения, которые там были выбраны (или вы хотите пузырить эти исключения)... Из моего понимания Python это в основном эквивалент этого
try {
//...Do Some Stuff Here
try {
// Else block code here
} catch (Exception $e) {
$e->elseBlock = true;
throw $e;
}
} catch (Exception $e) {
if (isset($e->elseBlock) && $e->elseBlock) {
throw $e;
}
// catch block code here
}
Итак, это немного более подробный (так как вам нужно повторно выбрасывать исключения), но он также пузыривает стек так же, как предложение else...
Изменить Или, немного более чистая версия (только 5.3)
class ElseException extends Exception();
try {
//...Do Some Stuff Here
try {
// Else block code here
} catch (Exception $e) {
throw new ElseException('Else Clasuse Exception', 0, $e);
}
} catch (ElseException $e) {
throw $e->getPrevious();
} catch (Exception $e) {
// catch block code here
}
Изменить 2
Повторяя ваш вопрос, я думаю, что вы можете быть слишком сложным с блоком "else"... Если вы просто печатаете (что вряд ли может вызвать исключение), вам действительно не нужно else block:
try {
// Do Some stuff
print "Success";
} catch (Exception $e) {
//Handle error here
print "Error";
}
Этот код будет только когда-либо печатать либо Success
, либо Error
... Никогда оба (поскольку, если функция print
выбрасывает исключение, она не будет фактически напечатана... Но я не думаю print
МОЖЕТ бросить исключения...).
Ответ 4
Не знакомы с python, но похоже, что вы используете блоки Try Catch, используемые с исключениями...
http://php.net/manual/en/language.exceptions.php
Ответ 5
try {
$clean = false;
...
$clean = true;
} catch (...) { ... }
if (!$clean) {
//...
}
Это лучшее, что вы можете сделать.
Ответ 6
Существует try-catch
в php.
Пример:
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';