无法正确处理一个简单的异常

时间:2017-07-06 15:36:42

标签: php exception

我编写了一个PHP类来管理一些统计函数,但是有些函数需要最少的元素,即> 0。 所以我添加了一个try catch,我仍然得到同样的错误。

/**
 * Calculates the minimum for a given set of values.
 *
 * @param array $values The input values
 * @return float|int The minimum of values as an integer or float
 */
public static function min($values)
{
    try {
        min($values);
    } catch (Exception $e) {
        return 0;
    }
}

我得到了:

ErrorException in Statistics.php line 41: min(): Array must contain at least one element

提前致谢。

3 个答案:

答案 0 :(得分:1)

public static function min($values)
{
    if (count($values) < 1) {
        return 0;
    }

    return min($values);
}

如果您希望在数组为空时返回0,那么简单的if语句就足够了。就个人而言,我会在堆栈中更高的位置处理这个问题,而不是创建我自己的min函数来处理它与内置函数的不同。

答案 1 :(得分:0)

您的ErrorException被您的框架抛出。 (类似于Can I try/catch a warning?

通常,min会触发Warning

根据min() docs

  

min()返回考虑的参数值&#34;最低&#34;根据标准比较。如果不同类型的多个值评估为相等(例如0和&#39; abc&#39;),则将返回提供给函数的第一个值。

     

如果传递空数组,则会返回FALSE,并会发出 E_WARNING 错误。

在您的情况下,$values是一个空数组。

为避免这种情况,您可以使用:

public static function min($values)
{
    if (empty($values)){
        return null; // better than 0. 0 is a valid minimum
    }

    return min($values);
}

答案 2 :(得分:0)

由于我正在使用Laravel,因为Alex注意到我错过了使用Exception来处理此异常。 之后,我能够发现错误。 谢谢你们所有人