【问题标题】:How to prevent a try-catch error from stopping execution如何防止 try-catch 错误停止执行
【发布时间】:2014-03-07 16:57:15
【问题描述】:

我读过这个帖子:php: catch exception and continue execution, is it possible?

每个答案都表明 try catch 将继续执行脚本。这是一个没有的例子:

  try{ $load = @sys_getloadavg(); }
  catch (Exception $e){ echo 'Couldn\'t find load average.<br>'; return false; }

我在 Windows 上的 xampp 上运行它,这可能是它出错的原因(当 @ 被删除时它会给出 Call to undefined function sys_getloadavg() 错误),但这不是问题所在。它可能是任何不存在、不受支持或失败的函数 - 我无法让脚本继续执行。

另一个例子是,如果尝试中存在语法错误,假设我包含了一个外部文件并将其解析为一个数组。这也会产生错误并停止执行。

是否有任何蛮力方法可以继续脚本运行,而不管尝试失败的原因是什么?

【问题讨论】:

  • 旁注保存击键echo "Couldn't find load average.&lt;br&gt;"; ;-)
  • 当你运行它时 /is/ 发生了什么?
  • 它停止执行脚本的其余部分。不过,try{} 可能有什么不好的地方。我可以在try{} 中有一整页代码,如果出错,它将停止执行而不是弹跳到捕获异常@VBCPP

标签: php exception try-catch


【解决方案1】:

与其他语言不同,PHP 中的异常和错误是有区别的。这就像其他语言的编译错误。需要声明文件。您无法捕捉或忽略诸如函数不存在的致命错误。您可以在使用前测试是否存在:

 if( function_exists('sys_getloadavg') {
       try{ $load = @sys_getloadavg(); }
           catch (Exception $e){ echo 'Couldn\'t find load average.<br>'; return false; }
 }

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多