我在try ... catch块中进行肥皂调用,
$request->l_Request->Year = $year;
// $request->l_Request->Period = $period;
try {
/**
*
* perform getMake request
* @var stdClass
*/
$response = $client->getSeries($request);
$series = $response->getSeriesResult->Lookup_Struc;
return $series;
} catch (SoapFault $exception) {
/**
* log exception on soap request
*/
$this->getLogger()->log($exception->getMessage(), Zend_Log::ERR);
$this->getLogger()->log($exception->getTraceAsString(), Zend_Log::INFO);
return false;
} catch (Exception $exception) {
/**
* log exception on soap request
*/
$this->getLogger()->log($exception->getMessage(), Zend_Log::ERR);
$this->getLogger()->log($exception->getTraceAsString(), Zend_Log::INFO);
return false;
}
以下是我的输出/错误的样子
(!)致命错误:SOAP-ERROR:编码:对象没有'Period' 位于第1121行的C:\ wamp \ www \ FHH \ library \ Zend \ Soap \ Client.php中的属性
但是我无法使用try catch捕获soap-error,是否有特殊的方法来处理它。
答案 0 :(得分:0)
我在我的应用程序中使用以下类将错误转换为异常:
class ErrorHandler
{
public function __construct()
{
set_error_handler( array( __CLASS__, 'handleError' ));
}
static public function handleError( $errno, $errstr, $errfile,
$errline, array $errcontext )
{
throw new ErrorException( $errstr, 0, $errno, $errfile, $errline );
}
}
您只需要创建一个实例:
$errorHandler = new ErrorHandler();
如果您正在使用ZF1 MVC,则另一种方法是将构造函数重命名为__initErrorHandler()
,并将这两种方法添加到引导类中。
我已经在使用Zend_Soap_Server
的代码中成功使用了这种方法,所以希望它也适合你。