4

一段时间以来一直盯着这个异常,不知道出了什么问题。

致命错误:错误的参数Exception([string $exception [, long $code ]])

看起来很简单,异常需要一条消息和一个可选代码,尽管由于某种原因代码不同意我的看法。即使我删除了最后一个参数$e(用于保留堆栈跟踪),也会弹出同样的错误。

try {
    // ...
} catch (Exception $e) {
    throw new Exception('Client cannot be created', 0, $e);
}

只有当我同时省略代码 ( 0) 和前面的异常 ( $e) 时,才会正确抛出错误。

try {
    // ...
} catch (Exception $e) {
    throw new Exception('Client cannot be created');
}
4

1 回答 1

1

虽然我从未使用过 SOAP 技术,所以只是取自 SoapClient manual

exceptions 选项是一个布尔值,定义了soap错误是否抛出异常类型SoapFault

soapFault语法是

SoapFault::SoapFault ( string $faultcode , 
                       string $faultstring [, 
                       string $faultactor [, 
                       string $detail [, 
                       string $faultname [, 
                       string $headerfault ]]]] );

所以我建议你检查手册上的所有例子。这里我有一个例子

要获取自定义 Soap 错误代码,请在 catch 中使用$e->faultcode而不是$e->getCode.

<?php 
try { 
    // ... 
} catch (SoapFault $e) { 
    echo $e->faultcode; 
} 
?>

再举一个例子:

try { 
            $options = array( 
                'soap_version'=>SOAP_1_1, 
                'exceptions'=>true, 
                'trace'=>1, 
                'cache_wsdl'=>WSDL_CACHE_NONE 
            ); 
            $client = new SoapClient('http://www.example.com/end_point.wsdl', $options); 

        } catch (Exception $e) { 
            echo "<h2>Exception Error!</h2>"; 
            echo $e->getMessage(); 
        } 

希望能帮助到你。

于 2012-09-04T08:50:59.517 回答