首頁 >後端開發 >php教程 >PHP中定義的一些內建錯誤

PHP中定義的一些內建錯誤

不言
不言原創
2018-07-18 10:26:161299瀏覽

從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