Переведите php исключение в блок захвата более высокого уровня. - PullRequest
7 голосов
/ 16 июня 2011

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

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

try {
   //some soap stuff
}

catch (SoapFault $sf) {
    throw new Exception('Soap Fault');
}

catch (Exception $e) {
     echo $e->getMessage();
}

1 Ответ

7 голосов
/ 16 июня 2011

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

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());
}
...