PHP内置错误

        PHP7起,引入了Error并定义了一些内置错误。
        ArithmeticError:Error子类,在执行数学运算发生错误时抛出。PHP7中这些错误包括执行负数位移操作、以及调用intdiv()导致的超出整数范围之外的值。
        AssertionError:Error子类,通过assert发出的断言失败时抛出异常。只有ini设置zend.assertions、assert.exception为1并且启用断言时,执行assert()时才会在为false时抛出AssertionError异常。
        ParseError:Error子类,当解析PHP代码发生错误时会抛出异常。
        TypeError:Error子类,当传递给函数的参数类型与它对应的声明参数类型不匹配;从函数返回的值与声明的函数返回类型不匹配以及在严格模式下将无效数量的参数传递给内置的PHP函数时会抛出异常。
        DivisionByZeroError:ArithmeticError子类,当分母为0或者当0被用作模运算符(%)时,从intdiv()中抛出异常。在除法(/)操作符中使用0只会发出警告,如果分子为0结果为NAN,如果分子非0则结果为INF。
        ArgumentCountError:PHP7.1起,TypeError子类,当传递给用户定义的函数或方法少于定义的参数数量时抛出异常。 
<?php
declare(strict_types=1);
function foo(string $arg){
	return 'test' . $arg;;
}
function testArithmeticError(){
	try {
        $value = 1 << -1;
    } catch (ArithmeticError $e) {
        echo 'show ArithmeticError:';
        echo $e->getMessage();
    }
}
function testAssertionError(){
    ini_set('zend.assertions', 1);
    ini_set('assert.exception', 1);
	try {
        assert(1>2);
    } catch (AssertionError $e) {
        echo 'show AssertionError:';
        echo $e->getMessage();
    }
}
function testParseError(){
    try {
        eval('asset(1>2)');
    } catch (ParseError $e) {
        echo 'show ParseError:';
        echo $e->getMessage();
    }
}
function testTypeError(){
    try {
        foo(123);
    } catch (TypeError $e) {
        echo 'show TypeError:';
        echo $e->getMessage();
    } 
}
function testDivisionByZeroError(){
    try{
        1%0;
    }catch(DivisionByZeroError $e){
        echo 'show DivisionByZeroError:';
        echo $e->getMessage();
    }
}
function testArgumentCountError(){
    try{
        foo();
    }catch(ArgumentCountError $e){
        echo 'show ArgumentCountError:';
        echo $e->getMessage();
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值