str_replace()的PHP异常

时间:2017-08-08 12:08:34

标签: php exception

美好的一天,

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

    try {
        ///######## REPLACE THE PLACEHOLDERS
        $template   = str_replace($Source, $Target, $templateblocks[$file]);
    }
    catch (Exception $e) {
        echo 'Caught exception: ',  $e->getMessage(), "\n";
    }

以上是我的代码。 这背后的原因是在某个itteration中它会抛出一个字符串到数组错误。 但是当我添加

if(is_array($templateblocks[$file]) === true){
echo 'an array set : print_r($templateblocks[$file], true).PHP_EOL.'<br /> file = '.$file);
}

这不起作用。所以我建议添加一个例外来解决这个问题。但我显然错过了一些东西。

提前致谢

2 个答案:

答案 0 :(得分:1)

我不确定你的问题究竟是什么。如果我没错,你就不能将自己的代码(例外)附加到基本的PHP函数中。

但是如果你使用PHP 7+,你可以捕获\ Throwable接口(class.throwable.php)??

修改

我的错误,只有错误抛出Throwable。在这种情况下,唯一的方法是在使用函数之前测试你的参数。

答案 1 :(得分:0)

str_replace()函数不会抛出任何异常。您只能检查您的参数(例如$Source$Target$templateblocks)并自行抛出任何您想要的例外。

示例:

if(strllen($Source) > 10) {
    throw new \InvalidArgumentException('The source string is too long!');
}

最后你可以在try {} catch(\InvalidArgumentException $e) {}内找到它。