Исключение Rtrow php в блоке catch более высокого уровня

Я пытаюсь передать исключение из определенного блока catch в более общий блок catch. Однако он не работает. Я получаю ошибку сервера 500, когда я пытаюсь сделать следующее. Возможно ли это?

Я понимаю, что есть легкие обходные пути, но не так ли нормально говорить: «Эй, я не чувствую, что имею дело с этой ошибкой, давайте обходим более общий обработчик исключений!»

try { //some soap stuff } catch (SoapFault $sf) { throw new Exception('Soap Fault'); } catch (Exception $e) { echo $e->getMessage(); } 

Технически это то, что вы ищете:

 try { try { //some soap stuff } catch (SoapFault $sf) { throw new Exception('Soap Fault'); } } catch (Exception $e) { echo $e->getMessage(); } 

однако я согласен с тем, что исключения не должны использоваться для контроля потока. Лучше всего было бы так:

 function show_error($message) { echo "Error: $message\n"; } try { //some soap stuff } catch (SoapFault $sf) { show_error('Soap Fault'); } catch (Exception $e) { show_error($e->getMessage()); }