php try … else

Есть что-то подобное в 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, используемые с исключениями …

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

 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';