Php 处理异常并无错误地继续工作

Php 处理异常并无错误地继续工作,php,try-catch,Php,Try Catch,我想防止PHP在我加载错误或失败的情况下抛出错误(例如从远程服务器)。最近,我开始使用try-catch块来避免致命错误,这样用户就不会知道有什么地方出了问题 看看我的代码: try { $flashRAW = file_get_contents($getXml); $flashXML = simplexml_load_string($flashRAW); } catch(Exception $e) { return $e->getMessage(); } $xm

我想防止PHP在我加载错误或失败的情况下抛出错误(例如从远程服务器)。最近,我开始使用try-catch块来避免致命错误,这样用户就不会知道有什么地方出了问题

看看我的代码:

try
{
    $flashRAW = file_get_contents($getXml);
    $flashXML = simplexml_load_string($flashRAW);
}
catch(Exception $e)
{
    return $e->getMessage();
}

$xmlString = $flashXML->asXML();
使用“返回”是我的发明(我想,我从来没有见过…)。使用return,我的应用程序将继续工作,并且不会出现“尝试获取非对象的属性”错误。没有回报,我会得到它-我认为这是愚蠢的,因为我用尝试捕捉,以防止这


这样使用return可以吗?处理异常并使应用程序在没有致命错误的情况下继续工作的更好方法是什么?我在某个地方读到,try-catch旨在处理逻辑错误并增加内存消耗。

我认为您遇到的问题是,如果出现异常,没有定义“$flashRAW”

在调用“$flashXML->asXML()”之前,应该选中“$flashRAW”

如果使用return,则函数/页面中不会执行任何代码,具体取决于代码所在的位置

是否使用return更多地取决于用例。因此,这取决于您如何使用它。

如果您想要捕获它引发的异常,请在您的
try/catch
块之前执行该操作

libxml_use_internal_errors(true);

我懂了。但这只是一个例子。我想我应该经常检查在这种情况下是否有物体。退货不好?我以前见过有人在catch block中使用退货,所以这不是一项新发明。但是你能做的(也应该做的)是将它记录到某个文件中,这样管理员就可以看到你遇到了什么问题(包括尽可能多的信息、用户ID、日期/时间、URL等),而不是返回,而是处理问题:显示错误消息,告诉他们联系管理员或再试一次。您认为我可以在生产环境中这样做吗?我想我不应该。日志记录当然可以,但向用户IMHO显示错误却不行。我想你误解了。显示错误是可以的,只要它的错误消息(即“对不起,找不到您要查找的文件”或“对不起,登录失败,再试一次”)不是神秘的PHP错误消息,就不应该向最终用户显示这些错误消息。