gpt4 book ai didi

functional-programming - 为什么 array_map 在闭包引发异常时抛出警告?

转载 作者:可可西里 更新时间:2023-10-31 22:47:39 24 4
gpt4 key购买 nike

我最近再次开始使用 PHP 编程,在长期使用其他语言之后,我开发了一种更实用的风格 - 我希望尝试并保持这种风格。

我注意到一些奇怪的行为,我设法将其提取到一个测试用例中,希望有人能解释。

$func = function($item) {
if ($item == 0)
throw new Exception("Can't do 0");
return $item;
};

try {
array_map($func, array(1, 2, 3, 0, 5));
} catch (Exception $ex) {
echo "Couldn't map array";
}

当执行上面的代码时,我看到以下输出:

Warning: array_map(): An error occurred while invoking the map callback in map_closure.php on line 10 Couldn't map array

我可以在 array_map 上使用 @ 来抑制错误,但这充其量看起来很老套。

最佳答案

生成警告是因为,简而言之,回调函数未正常返回(由于抛出异常)。如果回调函数未完成执行,这就是 array_map() 的编码方式。请记住,就您的 PHP 代码而言,异常会立即中断执行。

至于如何消除警告,那完全取决于你。不幸的是,将生成警告,您可以选择隐藏它或让它显示。

顺便说一句,也许您的测试用例过于简单了,但是在那里使用 array_filter()(或者 array_reduce())会更有意义.

关于functional-programming - 为什么 array_map 在闭包引发异常时抛出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com