溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php常見的錯誤與異常處理方法

發(fā)布時間:2021-09-04 11:56:04 來源:億速云 閱讀:126 作者:chen 欄目:編程語言

本篇內容介紹了“php常見的錯誤與異常處理方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

php與其他計算機編程語言在遇到錯誤就拋出異常不太一樣,PHP在處理對象時它也有異常機制,但是PHP會盡可能的愉快的去執(zhí)行而無視發(fā)生的事情,除非遇到一個極端嚴重錯誤才會拋出異常。本文主要給大家分享PHP相關的錯誤異常處理機制。

錯誤等級

PHP 有幾個錯誤嚴重性等級。三個最常見的的信息類型是錯誤(error)、通知(notice)和警告(warning)。它們有不同的嚴重性: E_ERROR 、E_NOTICE和 E_WARNING。錯誤是運行期間的嚴重問題,通常是因為代碼出錯而造成,必須要修正它,否則會使 PHP 停止執(zhí)行。通知是建議性質的信息,是因為程序代碼在執(zhí)行期有可能造成問題,但程序不會停止。 警告是非致命錯誤,程序執(zhí)行也不會因此而中止。

使用 PHP 內置的函數 error_reporting(),可以設定程序執(zhí)行期間的錯誤等級,方法是傳入預定義的錯誤等級常量,這意味著如果你只想看到警告和錯誤 - 而非通知 - 你可以這樣設定:

error_reporting(E_ERROR | E_WARNING);

你可以讓 PHP 利用錯誤控制操作符 @ 來抑制特定的錯誤, 如@fopen()。將這個操作符放置在表達式之前,其后的任何錯誤都不會出現(xiàn)。但是我不建議這么做。

錯誤報告

錯誤日志對于發(fā)現(xiàn)程序中的錯誤是非常有幫助的,但是有些時候它也會將應用程序的結構暴露給外部。為了有效的保護你的應用程序不受到由此而引發(fā)的問題。

在開發(fā)環(huán)境中,我喜歡讓PHP顯示并記錄所有錯誤消息,而在生產環(huán)境中,我會讓PHP記錄大多數錯誤消息,但不顯示出來。不管怎么做,一定要遵循以下4個規(guī)則:

一定要讓PHP報告錯誤。

在開發(fā)環(huán)境中顯示錯誤。

在生產環(huán)境中不能顯示錯誤。

在開發(fā)環(huán)境和生產環(huán)境中都要記錄錯誤。

我在php.ini中為開發(fā)環(huán)境設置錯誤報告方式如下:

;顯示錯誤

display_errors = On

display_startup_errors = On

;報告所有錯誤

error_reporting = -1

;記錄錯誤

log_errors = On

我在php.ini中為生產環(huán)境設置錯誤報告方式如下:

;不顯示錯誤

display_errors = Off

display_startup_errors = Off

;除了注意事項之外,報告所有其他錯誤

error_reporting = E_ALL & ~E_NOTICE

;記錄錯誤

log_errors = On

異常捕獲

異常是許多流行編程語言的標配,但它們往往被 PHP 開發(fā)人員所忽視。像 Ruby 就是一個極度重視異常的語言,無論有什么錯誤發(fā)生,像是 HTTP 請求失敗,或者數據庫查詢有問題,甚至找不到一個圖片資源,Ruby (或是所使用的 gems),將會拋出異常,你可以通過屏幕立刻知道所發(fā)生的問題。

PHP 處理這個問題則比較隨意,調用 file_get_contents() 函數通常只會給出 FALSE 值和警告。許多較早的 PHP 框架比如 CodeIgniter 只是返回 false,將信息寫入專有的日志,或者讓你使用類似 $this->upload->get_error() 的方法來查看錯誤原因。這里的問題在于你必須找出錯誤所在,并且通過翻閱文檔來查看這個類使用了什么樣的錯誤的方法,而不是明確的暴露錯誤。

另一個問題發(fā)生在當類自動拋出錯誤到屏幕時會結束程序。這樣做會阻擋其他開發(fā)者動態(tài)處理錯誤的機會。應該拋出異常讓開發(fā)人員意識到錯誤的存在,讓他們可以選擇處理的方式

“php常見的錯誤與異常處理方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI