Zend Framework 2 SOAP故障异常

时间:2013-07-02 10:35:32

标签: php zend-framework zend-framework2

我想知道我的SOAP代码中的原始异常详细信息是什么,我有一个处理请求的SOAP服务器如下:

$options = array(
    'soap_version' => SOAP_1_2,
    'actor' => someUriAString,
    'encoding' => 'UTF-8',
    'uri' => someUriAString);
$server = new Server(null, $options);
$server->setClass('SomeClass');
$server->setReturnResponse(true);
$serverResponse = $server->handle();

然后我检查是否发生异常,如下所示:

if ($serverResponse instanceof \SoapFault) {
    //log the $serverResponse exception details
}

但是当我记录这个异常时,我得到了类似的东西:

exception 'Exception' with message 'SoapFault exception: [Receiver] Unknown error 

我需要知道的是原始的异常细节......比如SQL异常,或者例如ORMException,...等。即我需要确切的原始例外细节...

我已尝试registerFaultException,例如:

$server->registerFaultException('Doctrine\ORM\ORMException');

我不知道这是否正确,但问题是可能会出现其他类型的异常,我无法注册它们,因为我不知道我的代码中可能发生什么异常!

1 个答案:

答案 0 :(得分:0)

这取决于期望的设置方式,但您可以获得以前的异常消息:

$message->getPrevious();

您可以像这样迭代它们:

if($message instanceof \Exception) {
    do {
       echo sprintf(
            "%s:%d %s (%d) [%s]\n", 
            $message->getFile(), 
            $message->getLine(), 
            $message->getMessage(), 
            $message->getCode(), 
            get_class($message)
       );
    }
    while($message = $message->getPrevious());
}