php 7 異常用於向下相容及增強舊的assert()函式。它能在生產環境中實現零成本的斷言,並且提供拋出自定義異常及錯誤的能力。
老版本的api出於相容目的將繼續被維護,assert()現在是乙個語言結構,它允許第乙個引數是乙個表示式,而不僅僅是乙個待計算的 string或乙個待測試的boolean。
assert() 配置
配置項
zend.assertions預設值為1
可選值 12
3451 - 生成和執行** (開發模式)
0 - 生成**,但在執行時跳過它
-1 - 不生成** (生產環境)
assert.exception預設值為0
可選值123
1 - 斷言失敗時丟擲,可以丟擲異常物件,如果沒有提供異常,則丟擲 assertionerror 物件例項。
0 - 使用或生成 throwable, 僅僅是基於物件生成的警告而不是丟擲物件(與 php 5 相容)
引數
assertion
斷言。在 php 5 中,是乙個用於執行的字串或者用於測試的布林值。在 php 7 中,可以是乙個返回任何值的表示式, 它將被執行結果用於指明斷言是否成功。
description
如果 assertion 失敗了,選項 description 將會包括在失敗資訊裡。
exception
在 php 7 中,第二個引數可以是乙個 throwable 物件,而不是乙個字串,如果斷言失敗且啟用了 assert.exception 該物件將被丟擲。
將 zend.assertions 設定為 0:例項1
2345
<?php
ini_set
(
'zend.assertions'
, 0);
assert(true == false);
echo
'hi!'
;
?>
以上程式執行輸出結果為:
hi!將 zend.assertions 設定為 1,assert.exception 設定為 1:例項1
2345
6<?php
ini_set
(
'zend.assertions'
, 1);
ini_set
(
'assert.exception'
, 1);
assert(true == false);
echo
'hi!'
;
?>
以上結果:12
345fatal error: uncaught assertionerror: assert(true == false) in -:2
stack trace:
#0 -(2): assert(false, 'assert(true == ...')
#1
thrown in - on line 2
php7 的異常處理
php7的改動中,影響比較大的,包括異常處理。更多的異常是直接通過php直接處理的,和之前的php5不同的是更多的異常是通過error exceptions來丟擲。作為乙個普通的擴充套件,error exceptions會持續冒出直到匹配到對應的catch塊。如果沒有進行匹配,就會觸發被設定的set...
聊聊php7 錯誤與異常處理
1,php7 的錯誤機制都會被丟擲乙個異常,普通錯誤會丟擲乙個 errorexception 異常,致命錯誤會丟擲乙個 error 異常。如果沒有定義錯誤處理,異常處理,則會被 php自身預設錯誤異常處理。如果同時自定義了 set error handler 錯誤處理,與 set exception...
php7中異常與錯誤的處理
首先宣告,筆者 php版本 7.2 錯誤的級別 自定義錯誤處理程式 什麼叫做異常?異常是指程式執行中不符合預期情況以及與正常流程不同的狀況。比如你鏈結資料庫,在引數都寫上去的條件下,發現鏈結不上去,這就屬於不符合預期 可以被 try catch 捕捉得到 什麼叫做錯誤?是屬於php程式自身的問題,一...