Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理和处理致命错误_Php - Fatal编程技术网

Php 如何处理和处理致命错误

Php 如何处理和处理致命错误,php,Php,我正在对一个设备运行一个php脚本,直到最近一个特殊情况导致了一个致命错误,这个设备一直工作得很好 $soapClient = new SoapClient("/var/www/blah/someWSDL.wsdl", array('trace'=>true, 'exceptions'=>true,'location'=>"https://hostName:8443/axl",'login' => "userName",'password'=> "password"

我正在对一个设备运行一个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->return->line->description的回显,用“nothing found”这样的文本替换这个输出。这是否可能与if语句有关,例如“如果发生致命错误,请输出此信息”?从我所读到的,这不是推荐的东西。感谢您的帮助。

一般来说,您应该通过检查抛出错误的条件来避免错误,并避免这些情况。如果无法避免错误,请使用以下结构:

try {
    // code that produces errors
} catch (Exception $e) {
    echo $e -> getMessage ();
    echo "Nothing found.";
}

进一步信息:

一般来说,您应该通过检查抛出错误的条件来避免错误,并避免这些情况。如果无法避免错误,请使用以下结构:

try {
    // code that produces errors
} catch (Exception $e) {
    echo $e -> getMessage ();
    echo "Nothing found.";
}

进一步信息:

可能重复:没有普遍有效的答案。理想情况下,您应该确定抛出
SoapFaul
的原因:这是您这边的逻辑错误还是您无法控制的运行时问题。您好,Alvaro,这不是逻辑错误。我知道错误发生的原因,信不信由你,这是完全正常的。我从数据库生成一个报告,然后使用数据库中的对象在另一个数据库中搜索。但是,第二个DB中的对象可能不再作为正常业务流程存在。然后,您应该捕获异常并确保代码正常恢复。可能的重复:没有普遍有效的答案。理想情况下,您应该确定抛出
SoapFaul
的原因:这是您这边的逻辑错误还是您无法控制的运行时问题。您好,Alvaro,这不是逻辑错误。我知道错误发生的原因,信不信由你,这是完全正常的。我从数据库生成一个报告,然后使用数据库中的对象在另一个数据库中搜索。但是,第二个DB中的对象可能不再作为正常业务流程存在。然后,您应该捕获异常并确保代码正常恢复。我建议不要仅为了打印它们而捕获异常。这没有明显的好处,你只是失去了相关的功能。例如,你不能有一个站点范围的错误处理程序来正确记录或报告它。这是一个很好的观点,但一般来说,这就是解决方案。一个侧范围的实现是最好的结果。此外,检查错误类型并正确处理也是必要的。我理解你的意思。一些背景。该脚本首先进入MySQL数据库,并搜索进行了最多长途呼叫的分机列表。但是,数据库不包含拨打电话的用户的姓名。查询的第二部分从第一个数据库获取扩展名,并检查第二个数据库中的用户名。但是,正如我发现的,由于用户离开或者扩展被停用,扩展实际上可能会从第二个db中删除。第一个数据库输出的数据仍然非常重要,但我无法进行第二个查询。这听起来像是一个糟糕的体系结构,但我知道有时候你无法回避它。为此,我建议首先使用COUNT查询第二个数据库是否有条目。如果有,请运行普通查询。我希望我没弄错。然后,使用我答案中提供的代码。将
echo
-行包装在try块中,并在catch块(仅在出现错误时调用)中,
echo“Nothing found.”。我建议不要仅仅为了打印而捕获异常。这没有明显的好处,你只是失去了相关的功能。例如,你不能有一个站点范围的错误处理程序来正确记录或报告它。这是一个很好的观点,但一般来说,这就是解决方案。一个侧范围的实现是最好的结果。此外,检查错误类型并正确处理也是必要的。我理解你的意思。一些背景。该脚本首先进入MySQL数据库,并搜索进行了最多长途呼叫的分机列表。但是,数据库不包含拨打电话的用户的姓名。查询的第二部分从第一个数据库获取扩展名,并检查第二个数据库中的用户名。但是,正如我发现的,由于用户离开或者扩展被停用,扩展实际上可能会从第二个db中删除。第一个数据库输出的数据仍然非常重要,但我无法进行第二个查询。这听起来像是一个糟糕的体系结构,但我知道有时候你无法回避它。为此,我建议首先使用COUNT查询第二个数据库是否有条目。如果有,请运行普通查询。我希望我没弄错。然后,使用我答案中提供的代码。将
echo
-行包装在try块中,并在catch块(仅在出现错误时调用)中,
echo“Nothing found.”