找回密码
 注册

[PHP] Fatal error: Uncaught TypeError to catch

php 发表于 2015/11/8 02:19 | 显示全部楼层 |阅读模式
PHP支持限定函数参数类型,PHP7开始支持string/bool/array/callable/int/float和类名,PHP7函数返回值也支持类型限定。
Fatal error: Uncaught TypeError: Argument 1 passed to xc() must be of the type array, integer given, called in D:\Web\www\nginx\index.php on line 9 and defined in D:\Web\www\nginx\index.php:7 Stack trace: #0 D:\Web\www\nginx\index.php(9): xc(4) #1 {main} thrown in D:\Web\www\nginx\index.php on line 7

对于PHP7,当传入或者返回的值不是限定的类型,将会Fatal error: Uncaught TypeError,这个错误是可以捕获异常的。捕获PHP Fatal error: Uncaught TypeError的代码如下,如果将TypeError修改为Exception则无法捕获此异常,因为PHP7中的大多数错误是以Error抛出异常,Error类并不是继承自Exception,所以无法上升到对应层面,可以使用 catch (Error $e) { ... } 来捕获错误类异常。

未捕获异常时的代码将会导致上面的错误
  1. <?php
  2.         function xc(array $a){
  3.         }
  4.         xc(4);
  5. ?>
复制代码
使用了异常捕获后的代码
  1. <?php
  2.         function xc(array $a){
  3.         }
  4.         try{
  5.                 xc(4);
  6.         }catch (TypeError $e){
  7.                 echo $e->getMessage();
  8.         }
  9. ?>
复制代码

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表