PHP的例外与错误处理

上传人:jiups****uk12 文档编号:45560066 上传时间:2018-06-17 格式:PPT 页数:23 大小:177.59KB
返回 下载 相关 举报
PHP的例外与错误处理_第1页
第1页 / 共23页
PHP的例外与错误处理_第2页
第2页 / 共23页
PHP的例外与错误处理_第3页
第3页 / 共23页
PHP的例外与错误处理_第4页
第4页 / 共23页
PHP的例外与错误处理_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《PHP的例外与错误处理》由会员分享,可在线阅读,更多相关《PHP的例外与错误处理(23页珍藏版)》请在金锄头文库上搜索。

1、第8章 PHP的例外與錯誤處理n8-1 PHP的錯誤處理n8-2 PHP 5的例外處理8-1 PHP的錯誤處理n8-1-1 PHP錯誤處理的基礎n8-1-2 exit()與die()的錯誤處理n8-1-3 自訂PHP的錯誤處理函數n8-1-4 產生使用者的自訂錯誤8-1 PHP的錯誤處理nPHP程式的錯誤(Errors)是指程式執行 前直譯過程的錯誤,或直譯後執行程式時 產生的錯誤,主要分為兩種,如下所示: 環境錯誤(Environmental Errors):環 境錯誤也稱為外部錯誤(External Errors) ,這是指程式執行環境所導致的錯誤,並不是 程式設計的問題。例如:沒有權限無

2、法寫入檔 案,或檔案不存在。 程式錯誤(Programming Errors):程式 錯誤是程式中的臭蟲(Bugs),可能是語法錯 誤、語意錯誤或程式邏輯錯誤(Logical Errors)。8-1-1 PHP錯誤處理的基礎-說明n錯誤處理(Error Handling)是一種處理 錯誤的機制,可以處理直譯過程的語法和 語意錯誤,或執行時的環境錯誤和程式錯 誤中的邏輯錯誤。nPHP在4.0版之前即提供內建的錯誤處理機 制,當錯誤產生時,可以顯示各種不同的 PHP錯誤訊息。8-1-1 PHP錯誤處理的基礎-範例n例如:執行Ch8-1-1.php程式,因為 require插入檔案不存在的環境錯誤,

3、在執 行時就會顯示PHP錯誤訊息,如下圖所示:8-1-1 PHP錯誤處理的基礎-四種 錯誤等級nParse Errors:剖析錯誤是指PHP程式碼的語 法和語意錯誤,這是執行前,直譯過程產生的錯 誤。nFatal Errors:致命錯誤是很嚴重的執行時錯誤 ,它會導致PHP程式碼終止執行。nWarnings:警告錯誤是一種尚能補救且非致命 的執行時錯誤,PHP引擎會試圖繼續執行PHP程 式碼。nNotices:注意錯誤是一種小且非致命的錯誤, 只是用來提醒程式碼可能出現的錯誤。例如:沒 有初始變數值。8-1-2 exit()與die()的錯誤處理-方 式n基本的錯誤處理方式有: 不理會 終止程

4、式顯示錯誤訊息 寫入記錄檔 使用自訂錯誤處理進行補救8-1-2 exit()與die()的錯誤處理-說 明nPHP程式最簡單的錯誤處理就是使用exit()或 die()終止程式執行和顯示一段錯誤訊息。nexit()與die()並不是真正的函數,它是PHP的語 言建構子(Language Construct),例如:使 用PHP的fopen()函數開啟檔案,如下所示: $fp = fopen($filename, “r“) / 開啟檔案or exit(“錯誤:檔案$filename開啟錯誤!“);8-1-3 自訂PHP的錯誤處理-設定 錯誤等級nPHP提供error_reporting()函數指

5、定PHP 程式需要回報的錯誤等級。換句話說,我 們可以只回報所需錯誤,而隱藏其他不需 要的錯誤,如下所示: error_reporting(E_ERROR | E_WARNING | E_NOTICE);n上述程式碼使用|運算子設定多種錯誤 等級,表示PHP程式會回報E_ERROR、 E_WARNING和E_NOTICE三種錯誤等級 。8-1-3 自訂PHP的錯誤處理-錯誤 等級常數8-1-3 自訂PHP的錯誤處理-指定 錯誤處理函數n在PHP程式可以使用set_error_handler() 函數指定一個函數作為錯誤處理,如下所 示: set_error_handler(myErrorHan

6、dler);n上述程式碼指定參數的函數名稱為錯誤處 理函數,即myErrorHandler()函數。8-1-3 自訂PHP的錯誤處理-錯誤 處理函數function myErrorHandler($type,$msg,$file,$line) switch( $type ) case E_ERROR: echo “;break;case E_WARNING: echo “;break;case E_NOTICE: echo “;break; / 顯示錯誤訊息,寫入記錄檔案 8-1-3 自訂PHP的錯誤處理-將錯 誤訊息寫入記錄檔nPHP程式的錯誤處理函數除了可以顯示錯誤 訊息外,還可以呼叫er

7、ror_log()函數將錯 誤訊息寫入檔案,如下所示:error_log($err, 3, “errors.log“);n函數第1個參數是錯誤訊息的字串,第2個 參數是輸出種類的整數值,如下表所示:8-1-4 產生使用者的自訂錯誤n在PHP的錯誤等級之中, E_USER_ERROR、E_USER_WARNING 和E_USER_NOTICE錯誤等級可以用來建 立使用者的自訂錯誤。n在PHP程式是呼叫trigger_error()函數產 生使用者自訂的錯誤,如下所示: trigger_error(“密碼是空字串!“, E_USER_ERROR);n上述函數可以產生第1個參數訊息內容的自 訂錯誤,

8、在第2個參數指定錯誤等級。8-2 PHP 5的例外處理n8-2-1 PHP 5的例外處理n8-2-2 繼承Exception類別8-2-1 PHP 5的例外處理-說明nPHP 5的例外處理(Handling Exceptions)是一種流程控制的程式敘述 ,可以停止目前程式碼的執行,然後跳到 指定區塊來處理錯誤。n這些錯誤是一種例外物件(Exception), 即在PHP程式執行期間,發生不正常執行狀 態或錯誤時所產生的物件。8-2-1 PHP 5的例外處理-產生例 外物件nPHP內建的Exception類別可以建立例外物 件,在PHP程式碼是使用throw指令來丟出 例外。例如:在PHP程式

9、丟出Exception例 外物件,如下所示: throw new Exception(“密碼是空字串!“);n上述程式碼使用new運算子建立例外物件 ,建構子方法的第1個參數是例外說明字串 ,第2個參數是選項的數字錯誤碼。8-2-1 PHP 5的例外處理-取得例 外資訊n在Exception類別提供數個方法可以取得例 外的相關資訊,如下表所示:8-2-1 PHP 5的例外處理-例外處 理的程式敘述(架構)nPHP語言的例外處理程式敘述分成try和 catch兩個程式區塊,可以處理特定的例外 物件,如下所示: try catch ( Exception $e ) / 例外處理 8-2-1 PHP

10、 5的例外處理-例外處 理的程式敘述(說明)ntry程式區塊:在try區塊的程式碼檢查是否產生 例外,當例外產生時,就會丟出指定例外類型的 物件。ncatch程式區塊:在try程式區塊的程式碼如果丟 出例外,PHP程式需要準備catch程式區塊處理例 外,傳入參數$e是例外物件,可以取得例外的相 關資訊,如下所示: print “檔案: “ . $e-getFile() . “; print “行號: “ . $e-getLine() . “; print “錯誤訊息: “ . $e-getMessage() . “;8-2-2 繼承Exception類別-說明n在PHP程式除了可以使用現成E

11、xception類 別建立例外物件外,我們也可以繼承 Exception類別建立自訂的例外子類別,其 主要目的如下所示: 在try/catch程式敘述可以區分不同錯誤所產 生的例外物件。 在子類別可以新增所需的成員方法。8-2-2 繼承Exception類別-範例n例如:驗證密碼錯誤的ValidException例外類別 宣告,如下所示: class ValidException extends Exception function getMyMessage() print “檔案: “.$this-getFile().“;print “行號: “.$this-getLine().“;prin

12、t “錯誤訊息: “.$this-getMessage().“; A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%r#oWlThQeNbJ8G5D

13、1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z- w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#o

14、XlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9L9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z- w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOd

15、L9I6E3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-

16、w*t!qYmVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVkSgSgPdLaI7F3C0y)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z- w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkTh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号