带有str_replace()的PHP异常
你好 我有个小问题。 想为str_replace函数创建一个PHP异常,但我似乎无法做到这一点带有str_replace()的PHP异常,php,exception,Php,Exception,你好 我有个小问题。 想为str_replace函数创建一个PHP异常,但我似乎无法做到这一点 try { ///######## REPLACE THE PLACEHOLDERS $template = str_replace($Source, $Target, $templateblocks[$file]); } catch (Exception $e) { echo 'Caught exception: ', $
try {
///######## REPLACE THE PLACEHOLDERS
$template = str_replace($Source, $Target, $templateblocks[$file]);
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
以上是我的代码。
这背后的原因是,在某个特定的事件中,它会向数组错误抛出一个字符串。
但是当我补充
if(is_array($templateblocks[$file]) === true){
echo 'an array set : print_r($templateblocks[$file], true).PHP_EOL.'<br /> file = '.$file);
}
if(is_数组($templateblocks[$file])==true){
echo“一个数组集:print_r($templateblocks[$file],true).PHP_EOL.
file='.$file);
}
这是行不通的。所以我建议添加一个异常可以解决这个问题。但我显然错过了一些东西
提前谢谢我不知道你到底有什么问题。如果我没记错的话,您不能将自己的代码(异常)附加到基本PHP函数中 但是如果您使用PHP7+,您可以捕获\Throwable接口() 编辑: 我的错误,只有错误可以扔掉。在这种情况下,唯一的方法是在使用函数之前测试参数。函数不会引发任何异常。您只能检查参数(即
$Source
,$Target
,$templateblocks
)并自行引发任何异常
例如:
if(strllen($Source) > 10) {
throw new \InvalidArgumentException('The source string is too long!');
}
最后你可以在
try{}catch(\InvalidArgumentException$e){}
stru-replace
中捕获它,stru-replace不会抛出异常,甚至不会抛出任何Throwable
sit's a注意事项,它是数组到字符串的转换。因此,您只能使用自定义事件处理程序执行此操作:-