TypeError与InvalidArgumentException?

时间:2017-05-24 04:39:45

标签: php exception error-handling php-7

PHP 7中TypeError和InvalidArgumentException的区别是什么?
何时抛出TypeError以及何时抛出InvalidArgumentException?

似乎错误在PHP 7中变得更像异常。
什么是划分错误和异常的边界线?

3 个答案:

答案 0 :(得分:2)

TypeError在函数的参数类型或返回值与预期类型不匹配时发生,例如,如果某个函数需要string但您传递/返回了{{1 }}。

int可用于在参数与期望值不匹配的情况下引发错误,例如,如果您希望参数仅具有1到10的范围内的值,而调用方则传递值11,则可以抛出此异常。

答案 1 :(得分:-1)

TypeError是指在以下情况下发生的情况:

  1. 传递给函数的参数类型与其对应的声明参数类型不匹配。
  2. 返回类型与声明的函数返回类型不匹配。
  3. 将无效数量的参数传递给内置PHP函数。
  4. 如果参数不是预期的类型,则

    InvalidArgumentException是抛出的异常。

    错误无法在运行时处理,但可以在运行时处理异常。

答案 2 :(得分:-2)

InvalidArgumentException (来源:http://php.net/manual/en/class.invalidargumentexception.php

  

如果参数不是预期类型,则抛出异常。

示例(来源:http://php.net/manual/en/class.invalidargumentexception.php

function tripleInteger($int)
{
  if(!is_int($int))
    throw new InvalidArgumentException('tripleInteger function only accepts integers. Input was: '.$int);
  return $int * 3;
}

TypeError (来源:http://php.net/manual/en/class.typeerror.php

  

有三种情况可能会抛出TypeError。第一个是传递给函数的参数类型与其对应的声明参数类型不匹配的位置。第二个是函数返回的值与声明的函数返回类型不匹配。第三种是将无效数量的参数传递给内置PHP函数(仅限严格模式)。