正确创建新的SoapClient时捕获异常

时间:2013-10-10 17:06:19

标签: php exception-handling laravel laravel-4

我很难抓住SoapClient身份验证问题。当我的代码执行时,Laravel声明它抛出了一个ErrorException,但无论我使用什么代码,我似乎无法捕获它。我正在标记Laravel以防万一我不知道某个地方会有一些魔法,因为App :: error()仍会触发此错误。

try {
    $client = new SoapClient(
        $this->serviceUrl . $this->clients[$clientName],
        array(
            'login'      => $this->username,
            'password'   => $this->password,
            'exceptions' => true,
        )
    );
} catch (SoapFault $e) {
    die('soapfault never fires!');
} catch (Exception $e) {
    die('exception won\t t');
} catch (ErrorException $e) {
    die('error exception also doesn\'t error');
}

根据Laravel的说法,抛出了ErrorException,但上面的代码没有捕获它。

ErrorException

SoapClient::SoapClient(https://control.akamai.com/nmrws/services/RealtimeReports?wsdl) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized

1 个答案:

答案 0 :(得分:1)

在异常类型之前添加反斜杠(例如Exception变为\Exception)。

它们属于全局命名空间。您的代码尝试捕获当前使用的命名空间中的异常,该异常不必与全局相同。