Rethrow php异常进入更高级别的catch块

时间:2011-06-16 19:01:05

标签: php exception-handling try-catch

我正在尝试将特定catch块中的异常传递给更通用的catch块。但它似乎没有起作用。我尝试以下操作时出现500服务器错误。这甚至可能吗?

我意识到有一些简单的解决方法,但是说“嘿,我不想处理这个错误,让我们有更普遍的异常处理程序来处理它!”

try {
   //some soap stuff
}

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

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

1 个答案:

答案 0 :(得分:7)

从技术上讲,这就是你要找的东西:

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