带有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: ', $

你好

我有个小问题。 想为str_replace函数创建一个PHP异常,但我似乎无法做到这一点

    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
注意事项,它是
数组到字符串的转换。因此,您只能使用自定义事件处理程序执行此操作:-