Я думаю, что предложение "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
МОЖЕТ выбрасывать исключения ...).