【发布时间】:2016-10-25 13:58:05
【问题描述】:
我正在针对一个一直运行良好的设备运行一个 php 脚本,直到最近一个特殊情况导致了致命错误。
$soapClient = new SoapClient("/var/www/blah/someWSDL.wsdl", array('trace'=>true, 'exceptions'=>true,'location'=>"https://hostName:8443/axl",'login' => "userName",'password'=> "password"));
$response = $soapClient->getLine(array("routePartitionName"=>"PT-INHOUSE", "pattern"=>"$row[callingPartyNumber]"));
echo "<TR><TD class='body'>" . $response->return->line->description . "</TD><TD class='body'>"
因此,这将适用于 $response 产生输出的任何情况。但是,在某些情况下它不会(非常罕见)。在这些情况下,会生成它;
Fatal error: Uncaught SoapFault exception: [soapenv:Server] Item not valid:
在阅读这个问题时,听起来我应该做的是“捕捉”错误。如果发生致命错误,我想绕过回显 $response->return->line->description 并将此输出替换为“未找到”之类的文本。这是否可能与 if 语句有关,例如“如果发生致命错误,则输出此”?根据我的阅读,这不是推荐的东西。任何帮助表示赞赏。
【问题讨论】:
-
没有普遍有效的答案。理想情况下,您应该确定抛出
SoapFaul的原因:是您这边的逻辑错误还是您无法控制的运行时问题。 -
嗨,Alvaro,这不是逻辑错误。我知道为什么会发生错误,而且不管你信不信,它是完全正常的。我正在从数据库生成报告,然后使用数据库中的对象在另一个数据库中搜索。但是,作为正常业务过程,第二个数据库中的对象可能不再存在。
-
然后您应该捕获异常并确保您的代码正常恢复。
标签: php