首页 >后端开发 >php教程 >PHP中定义的一些内置错误

PHP中定义的一些内置错误

不言
不言原创
2018-07-18 10:26:161296浏览

从PHP7开始,便引入了Error并定义了一些内置错误。在这里总结一些所定义的内置错误,也算是有个记录。
ArithmeticError:Error子类,在执行数学运算发生错误时抛出。PHP7中这些错误包括执行负数位移操作、以及调用intp()导致的超出整数范围之外的值。
AssertionError:Error子类,通过assert发出的断言失败时抛出异常。只有ini设置zend.assertions、assert.exception为1并且启用断言时,执行assert()时才会在为false时抛出AssertionError异常。
ParseError:Error子类,当解析PHP代码发生错误时会抛出异常。
TypeError:Error子类,当传递给函数的参数类型与它对应的声明参数类型不匹配;从函数返回的值与声明的函数返回类型不匹配以及在严格模式下将无效数量的参数传递给内置的PHP函数时会抛出异常。
pisionByZeroError:ArithmeticError子类,当分母为0或者当0被用作模运算符(%)时,从intp()中抛出异常。在除法(/)操作符中使用0只会发出警告,如果分子为0结果为NAN,如果分子非0则结果为INF。
ArgumentCountError:PHP7.1起,TypeError子类,当传递给用户定义的函数或方法少于定义的参数数量时抛出异常。 

<?php
declare(strict_types=1);
function foo(string $arg){
	return &#39;test&#39; . $arg;;
}
function testArithmeticError(){
	try {
        $value = 1 << -1;
    } catch (ArithmeticError $e) {
        echo &#39;show ArithmeticError:&#39;;
        echo $e->getMessage();
    }
}
function testAssertionError(){
    ini_set(&#39;zend.assertions&#39;, 1);
    ini_set(&#39;assert.exception&#39;, 1);
	try {
        assert(1>2);
    } catch (AssertionError $e) {
        echo &#39;show AssertionError:&#39;;
        echo $e->getMessage();
    }
}
function testParseError(){
    try {
        eval(&#39;asset(1>2)&#39;);
    } catch (ParseError $e) {
        echo &#39;show ParseError:&#39;;
        echo $e->getMessage();
    }
}
function testTypeError(){
    try {
        foo(123);
    } catch (TypeError $e) {
        echo &#39;show TypeError:&#39;;
        echo $e->getMessage();
    } 
}
function testpisionByZeroError(){
    try{
        1%0;
    }catch(pisionByZeroError $e){
        echo &#39;show pisionByZeroError:&#39;;
        echo $e->getMessage();
    }
}
function testArgumentCountError(){
    try{
        foo();
    }catch(ArgumentCountError $e){
        echo &#39;show ArgumentCountError:&#39;;
        echo $e->getMessage();
    }
}

//foo("ArithmeticError")();
//foo("AssertionError")();
//foo("ParseError")();
//foo("TypeError")();
//foo("pisionByZeroError")();
//foo("ArgumentCountError")();
?>

相关推荐:

php中的错误级别,php错误级别_PHP教程

以上是PHP中定义的一些内置错误的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn