**一.TypeError和ValueError改进作用**
#在PHP 8中,内部函数参数强制执行类型和值验证,如果不允许使用预期的类型或值,则将抛出TypeError或ValueError异常错误.
#在PHP 8之前,这会导致PHP警告.
1.TypeError触发条件
提供的值是不是正确的类型.
2.ValueError触发条件
如果提供的值是正确的类型,但PHP在上下文中不可接受,则PHP会引发ValueError异常.
**二.系统函数引发TypeError**
```
substr('foo', []);
try{
substr('linux',[]);
}catch(TypeError $e){
echo $e->getMessage();
}
```
**三.系统函数引发ValueError**
```
json_decode('"foo"', true, -1);
try{
json_decode('"foo"', true, -1);
}catch(ValueError $e){
echo $e->getMessage();
}
```
**四.自定义函数引发TypeError**
```
function show(string $name){
var_dump($name);
}
show([]);
```
**五.自定义函数引发ValueError**
```
function show(int $number){
if($number<10){
throw new ValueError('this value must be greater or equal 10');
}else{
echo $number;
}
}
show(5);
#try捕捉
function show(int $number){
if($number<10){
throw new ValueError('the number must be greater and equal 10');
}else{
echo $number;
}
}
try{
show(5);
}catch(ValueError $e){
echo $e->getMessage();
}
```
**配套的PHP8新特性详解视频教程,请查看以下专辑**
链接:[https://www.ixigua.com/6937490165329822219](https://www.ixigua.com/6937490165329822219)