Есть что-то подобное в PHP для try ... else
в Python?
Мне нужно знать, выполняется ли блок try правильно, как при правильном выполнении блока, будет напечатано сообщение.
Вы можете использовать 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"; }
У PHP нет try / catch / else. Однако вы можете установить переменную в блоке catch, которая может быть использована для определения того, была ли она выполнена:
$caught = false; try { // something } catch (Exception $e) { $caught = true; } if (!$caught) { }
Я думаю, что предложение «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:
try { // Do Some stuff print "Success"; } catch (Exception $e) { //Handle error here print "Error"; }
Этот код будет когда-либо печатать либо « Success
либо « Error
… Никогда оба (поскольку, если функция print
генерирует исключение, она не будет напечатана на самом деле … Но я не думаю, что print
может выдавать исключения …) ,
Не знакомы с python, но похоже, что вы используете блоки Try Catch, используемые с исключениями …
try { $clean = false; ... $clean = true; } catch (...) { ... } if (!$clean) { //... }
Это лучшее, что вы можете сделать.
Существует 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';