我想防止PHP在我的错误或加载失败(例如来自远程服务器)时抛出错误的情况。最近我开始使用try-catch块来避免致命错误,因此用户不知道有什么东西搞砸了。
看看我的代码:
try
{
$flashRAW = file_get_contents($getXml);
$flashXML = simplexml_load_string($flashRAW);
}
catch(Exception $e)
{
return $e->getMessage();
}
$xmlString = $flashXML->asXML();
使用“返回”是我的发明(我想,我从未见过......)。返回后,我的应用程序将继续工作,我将不会“尝试获取非对象属性”错误。没有回报我会得到它 - 我认为这是愚蠢的,因为我使用try-catch来防止这种情况......
使用这种方式退货好吗?是更好的方法来处理异常并使该应用程序将继续工作而不会出现致命错误?在某处我读到try-catch旨在处理逻辑错误并增加内存消耗。
答案 0 :(得分:1)
我认为你遇到的问题是因为如果有例外,'$ flashRAW'没有被定义。
在调用'$ flashXML-> asXML()'之前,你应该检查'$ flashRAW'。
如果使用return,则在函数/页面中不执行任何代码,具体取决于代码的位置。
使用return或不使用return的选择更多基于Use Case。所以取决于你如何使用它。
答案 1 :(得分:0)
如果你想捕捉它引发的例外,你需要使用libxml_use_internal_errors,在try/catch
阻止之前执行此操作
libxml_use_internal_errors(true);