Php 异常的参数错误([string$Exception[,long$code]])

Php 异常的参数错误([string$Exception[,long$code]]),php,Php,已经关注这个异常有一段时间了,不知道出了什么问题 致命错误:异常的参数错误([string$Exception[,long$code]]) 这看起来很直截了当,异常需要一条消息和一个可选代码,尽管出于某种原因,代码不符合我的要求。即使我删除最后一个参数$e(用于保持堆栈跟踪),也会弹出相同的错误 try { // ... } catch (Exception $e) { throw new Exception('Client cannot be created', 0, $e);

已经关注这个异常有一段时间了,不知道出了什么问题

致命错误:
异常的参数错误([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');
}

虽然我从未使用过SOAP技术,但我只是从

exceptions选项是一个布尔值,用于定义是否存在soap错误 抛出类型为的异常

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(); 
        } 
试试{
$options=数组(
“soap_版本”=>soap_1_1,
“例外情况”=>true,
“跟踪”=>1,
'cache\u wsdl'=>wsdl\u cache\u NONE
); 
$client=新的SoapClient('http://www.example.com/end_point.wsdl美元期权);
}捕获(例外$e){
回显“异常错误!”;
echo$e->getMessage();
} 

希望有帮助。

@diEcho$this->service=newsoapclient(VHS_WSDL,array(“trace”=>1));不过很有趣的是,PHP文档将代码描述为一个int,但是,例外是关于一个long。看看文档哪个PHP版本?你能提供重现问题的代码吗?当前版本是5.2.7。我发现5.3支持提供前面的异常。所以我还是想删除那个参数,而我的代码并没有真正使用它,所以将它剥离为工作异常。不过,我不知道为什么带$code参数的代码不起作用。