跟著百度學PHP 11 PHP當中的異常處理

2022-03-28 22:09:28 字數 4106 閱讀 1330

首先要說一下常見的三種錯誤:

1.語法錯誤

2.執行錯誤

3.邏輯錯誤

00x1 錯誤報告及錯誤級別

php的錯誤分為三個等級

1.注意(notice)   沒有變數a

2.警告(warning) 沒有給函式傳值

3.致命的錯誤(fatal error) 函式寫錯

錯誤的報告級別可以在php.ini當中修改。

在php.ini當中找到錯誤報告「error_reporting = e_all 」 這個的意思是將所有的錯誤都提示出來。

ps:~是除了的意思。&是和的意思。

error_reporting = e_warning & e_fatal error (僅提示警告warning和致命錯誤fatal error)

error_reporting = e_all ~ e_notice (提示全部,除了注意notice)

00x2 自定義php報告錯誤處理方式

什麼叫做自定義報告錯誤的處理方式呢?

也就是( ! ) fatal error: call to undefined function geaaattype() in d:\wamp\www\dnf.php on line 2

按照我們意圖來寫。

很顯然這個錯誤是php自己系統已經自帶的。那麼我們需要告訴php我們不要你自身的這個錯誤函式,我要自己建立乙個。

set_error_handler("myerrorfun");(handler音譯:處理)這個語句就是告訴php我要自己建立乙個myerrorfun的錯誤資訊。然後你需要定義一下這個函式。**大概如下所示:

<?php 

set_error_handler("myerrorfun");#

註冊乙個myerrorfun的錯誤函式

function myerrorfun($type,$mess,$file,$line)

?>

00x3 設定錯誤日誌在php.ini當中有顯示錯誤:display_errors = on  預設是開著的,我們可以off關閉它。apache的日誌檔案:log_errors = on

如果想要把apache的日誌檔案寫入windows的系統日誌裡面,就可以將:error_log = syslog開啟。預設是被注釋掉的。分號是注釋。

00x4 php異常處理(try catch

如果有trow new exception的話那麼就是有異常。

1

<?php

2echo "早上起床";3

trycatch(exception$e)

11 ?>

本來是按照順序,1-2-3-4-5-6....這樣執行的,但是當程式執行到throw new exception(拋出新的異常)的時候就會直接跳過第六行去執行第8行的,而

會被賦值給$e,exception其實是乙個類,系統定義好的乙個類,可以通過呼叫getmessage來獲取第5行裡面的「車子爆胎」這個資料。倘若沒有throw new exception的話,就會直接向下執行,說路況很好,進而不執行第9行的**。

那麼問題來了,怎麼知道系統發生錯誤了呢???

思路:可以註冊乙個錯誤函式(00x2有講到),然後使用if判斷錯誤的型別。

案例:

<?php 

set_error_handler("myerrorfun");

function myerrorfun($type,$mess,$file,$line

),,");

}}function say($language)

say();

#故意錯誤的使用函式。

?>

結果爆出如下錯誤:

( ! ) fatal error: uncaught exception 'exception' with message '出現了嚴重的錯誤。missing argument 1 for say(), called in d:\wamp\www\test.php on line 11 and defined,d:\wamp\www\test.php,8' in d:\wamp\www\test.php on line 5

( ! ) exception: 出現了嚴重的錯誤。missing argument 1 for say(), called in d:\wamp\www\test.php on line 11 and defined,d:\wamp\www\test.php,8 in d:\wamp\www\test.php on line 5

那麼正確書寫say函式的話就不會報錯了。

<?php 

set_error_handler("myerrorfun");

function myerrorfun($type,$mess,$file,$line

),,");

}}function say($language)

say("珍惜愛你的人,不要等失去才珍惜。我會一直愛著你。");#

故意錯誤的使用函式。

00x4 自定義異常類

前面學習到的exception是系統早就有了的異常類,那麼我們可不可以自定義異常類呢?答案無疑是肯定的。

<?php 

class myexception extends

exception

}echo "11111111111

";try

catch(myexception $e

) ?>

00x5多個異常處理

<?php 

$kaichu = "no";

class gowc_exception extends

exception

}class chizaodian_exception extends

exception

}class qushangban_exception extends

exception

}class shangban_exception extends

exception

}echo "早上起床

";//

-------------------------------------第乙個錯誤-----------------

try catch(gowc_exception $e)//

-------------------------------------第二個錯誤-----------------

trycatch(chizaodian_exception $e)//

-------------------------------------第三個沒有錯誤-----------------

trycatch(qushangban_exception $e)//

-------------------------------------使用if判斷---------------------

try

echo "工作完成。";

}catch(shangban_exception $e

) ?>

輸出效果如下所示:

跟著百度學PHP 11 PHP當中的異常處理

首先要說一下常見的三種錯誤 1.語法錯誤 2.執行錯誤 3.邏輯錯誤 00x1 錯誤報告及錯誤級別 php的錯誤分為三個等級 1.注意 notice 沒有變數a 2.警告 warning 沒有給函式傳值 3.致命的錯誤 fatal error 函式寫錯 錯誤的報告級別可以在php.ini當中修改。在...

跟著百度學PHP 9 session會話

參考 session變數用於儲存有關使用者的會話的資訊,或更改使用者會話的設定,session變數儲存的資訊是單一使用者的,並且可 用程式中的所有頁面使用。session的工作機制就是為每乙個訪問者建立乙個唯一的id uid 並基於這個uid來儲存變數。uid儲存在cookie中,亦或通過url進行...

跟著百度學PHP 14 PDO 優化驅動

使用方法設定預定義變數 pdo的方法 屬性 pdo預定義常量 ps 可以使用預定義常量來獲取一些伺服器或者客戶端的資訊 語法 pdo屬性或者方法 pdo域定義變數 案例 try catch exception e echo pdo getattribute pdo attr driver name ...