PHP7 異常處理

2022-06-09 19:30:11 字數 1854 閱讀 5750

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程式自身的問題,一...