背景: 假设我有以下明显不正确的PHP:
try{ $vtest = ''; print(array_pop($vtest)); }catch(Exception $exx){}
为了使其与array_pop一起使用,$ vtest应该显然是一个数组,而不是字符串。但是,当我运行此代码时,会显示警告。我不希望那样,我只希望代码静默失败。
问题: 与其他导致这种情况不起作用的语言相比,PHP try-catch有什么特别之处吗?
免责声明: 仅供参考,确实有其他方法可以处理PHP中的这种情况,但是这些方法是不可取的。目的是避免:
“标志”技巧:
$vtest = ''; print(@array_pop($vtest)); // <-- would like to avoid this
类型转换:
$vtest = ''; $vtest = (array)$vtest; print(array_pop($vtest));
从技术上讲,警告和声明在PHP中不是例外。要捕获异常,必须显式引发它,并且许多内置的函数库不引发异常(主要是因为它们是在PHP支持的异常之前编写的)。
如果以某种方式在现有的通知/警告/错误框架之上构建异常,那将是一件很不错的事,但这也许要求太多。