PHP中定义的一些内置错误

不言
发布: 2023-04-03 08:46:02
原创
1260 人浏览过

从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中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!