美好的一天,
我有一个小问题。 想要为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);
}
这不起作用。所以我建议添加一个例外来解决这个问题。但我显然错过了一些东西。
提前致谢
答案 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) {}
内找到它。