1

I am making a soap call from inside a try...catch block,

        $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;           
        }  

Here's how my output/error looks like

( ! ) Fatal error: SOAP-ERROR: Encoding: object has no 'Period' property in C:\wamp\www\FHH\library\Zend\Soap\Client.php on line 1121

But I am unable to catch soap-error using try catch, Is there special way to handle this.

4

1 に答える 1

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()これら2つのメソッドをブートストラップクラスに追加することです。

私はを使用するコードでこのアプローチをうまく使用したZend_Soap_Serverので、うまくいけばあなたにもうまくいくでしょう。

于 2012-05-07T06:07:22.693 に答える