背景:假设我有以下明显不正确的 PHP:
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
为了与 array_pop 一起工作,$vtest 显然应该是一个数组,而不是一个字符串。然而,当我运行此代码时,会显示警告。我不想这样,我只想让代码静静地失败。
问题:与其他语言相比,PHP try-catch 是否有什么特别之处导致它无法正常工作?
免责声明: 仅供引用,在 PHP 中确实有其他方法可以处理这种情况,但这些都是不可取的。这里的目标是避免:
“at-sign”技巧:
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
类型转换:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));
最佳答案
警告和通知在技术上不是 PHP 中的异常。要捕获异常,必须显式抛出它,并且许多内置函数库不会抛出异常(主要是因为它们是在 PHP 支持异常之前编写的)。
如果以某种方式在现有的通知/警告/错误框架之上构建异常会很好,但也许这要求太多了。
关于PHP try-catch block : are they able to catch invalid arg types?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087365/