本篇內(nèi)容介紹了“php常見的錯(cuò)誤與異常處理方法”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),友情鏈接,廣告投放平臺(tái)為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。php與其他計(jì)算機(jī)編程語言在遇到錯(cuò)誤就拋出異常不太一樣,PHP在處理對(duì)象時(shí)它也有異常機(jī)制,但是PHP會(huì)盡可能的愉快的去執(zhí)行而無視發(fā)生的事情,除非遇到一個(gè)極端嚴(yán)重錯(cuò)誤才會(huì)拋出異常。本文主要給大家分享PHP相關(guān)的錯(cuò)誤異常處理機(jī)制。
錯(cuò)誤等級(jí)
PHP 有幾個(gè)錯(cuò)誤嚴(yán)重性等級(jí)。三個(gè)最常見的的信息類型是錯(cuò)誤(error)、通知(notice)和警告(warning)。它們有不同的嚴(yán)重性: E_ERROR 、E_NOTICE和 E_WARNING。錯(cuò)誤是運(yùn)行期間的嚴(yán)重問題,通常是因?yàn)榇a出錯(cuò)而造成,必須要修正它,否則會(huì)使 PHP 停止執(zhí)行。通知是建議性質(zhì)的信息,是因?yàn)槌绦虼a在執(zhí)行期有可能造成問題,但程序不會(huì)停止。 警告是非致命錯(cuò)誤,程序執(zhí)行也不會(huì)因此而中止。
使用 PHP 內(nèi)置的函數(shù) error_reporting(),可以設(shè)定程序執(zhí)行期間的錯(cuò)誤等級(jí),方法是傳入預(yù)定義的錯(cuò)誤等級(jí)常量,這意味著如果你只想看到警告和錯(cuò)誤 - 而非通知 - 你可以這樣設(shè)定:
error_reporting(E_ERROR | E_WARNING);
你可以讓 PHP 利用錯(cuò)誤控制操作符 @ 來抑制特定的錯(cuò)誤, 如@fopen()。將這個(gè)操作符放置在表達(dá)式之前,其后的任何錯(cuò)誤都不會(huì)出現(xiàn)。但是我不建議這么做。
錯(cuò)誤報(bào)告
錯(cuò)誤日志對(duì)于發(fā)現(xiàn)程序中的錯(cuò)誤是非常有幫助的,但是有些時(shí)候它也會(huì)將應(yīng)用程序的結(jié)構(gòu)暴露給外部。為了有效的保護(hù)你的應(yīng)用程序不受到由此而引發(fā)的問題。
在開發(fā)環(huán)境中,我喜歡讓PHP顯示并記錄所有錯(cuò)誤消息,而在生產(chǎn)環(huán)境中,我會(huì)讓PHP記錄大多數(shù)錯(cuò)誤消息,但不顯示出來。不管怎么做,一定要遵循以下4個(gè)規(guī)則:
一定要讓PHP報(bào)告錯(cuò)誤。
在開發(fā)環(huán)境中顯示錯(cuò)誤。
在生產(chǎn)環(huán)境中不能顯示錯(cuò)誤。
在開發(fā)環(huán)境和生產(chǎn)環(huán)境中都要記錄錯(cuò)誤。
我在php.ini中為開發(fā)環(huán)境設(shè)置錯(cuò)誤報(bào)告方式如下:
;顯示錯(cuò)誤
display_errors = On
display_startup_errors = On
;報(bào)告所有錯(cuò)誤
error_reporting = -1
;記錄錯(cuò)誤
log_errors = On
我在php.ini中為生產(chǎn)環(huán)境設(shè)置錯(cuò)誤報(bào)告方式如下:
;不顯示錯(cuò)誤
display_errors = Off
display_startup_errors = Off
;除了注意事項(xiàng)之外,報(bào)告所有其他錯(cuò)誤
error_reporting = E_ALL & ~E_NOTICE
;記錄錯(cuò)誤
log_errors = On
異常捕獲
異常是許多流行編程語言的標(biāo)配,但它們往往被 PHP 開發(fā)人員所忽視。像 Ruby 就是一個(gè)極度重視異常的語言,無論有什么錯(cuò)誤發(fā)生,像是 HTTP 請(qǐng)求失敗,或者數(shù)據(jù)庫查詢有問題,甚至找不到一個(gè)圖片資源,Ruby (或是所使用的 gems),將會(huì)拋出異常,你可以通過屏幕立刻知道所發(fā)生的問題。
PHP 處理這個(gè)問題則比較隨意,調(diào)用 file_get_contents() 函數(shù)通常只會(huì)給出 FALSE 值和警告。許多較早的 PHP 框架比如 CodeIgniter 只是返回 false,將信息寫入專有的日志,或者讓你使用類似 $this->upload->get_error() 的方法來查看錯(cuò)誤原因。這里的問題在于你必須找出錯(cuò)誤所在,并且通過翻閱文檔來查看這個(gè)類使用了什么樣的錯(cuò)誤的方法,而不是明確的暴露錯(cuò)誤。
另一個(gè)問題發(fā)生在當(dāng)類自動(dòng)拋出錯(cuò)誤到屏幕時(shí)會(huì)結(jié)束程序。這樣做會(huì)阻擋其他開發(fā)者動(dòng)態(tài)處理錯(cuò)誤的機(jī)會(huì)。應(yīng)該拋出異常讓開發(fā)人員意識(shí)到錯(cuò)誤的存在,讓他們可以選擇處理的方式
“php常見的錯(cuò)誤與異常處理方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!