PHP的例外与错误处理课件.ppt

上传人:小飞机 文档编号:1287178 上传时间:2022-11-04 格式:PPT 页数:22 大小:195.43KB
返回 下载 相关 举报
PHP的例外与错误处理课件.ppt_第1页
第1页 / 共22页
PHP的例外与错误处理课件.ppt_第2页
第2页 / 共22页
PHP的例外与错误处理课件.ppt_第3页
第3页 / 共22页
PHP的例外与错误处理课件.ppt_第4页
第4页 / 共22页
PHP的例外与错误处理课件.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《PHP的例外与错误处理课件.ppt》由会员分享,可在线阅读,更多相关《PHP的例外与错误处理课件.ppt(22页珍藏版)》请在三一办公上搜索。

1、第8章 PHP的例外與錯誤處理,8-1 PHP的錯誤處理8-2 PHP 5的例外處理,第8章 PHP的例外與錯誤處理8-1 PHP的錯誤處理,8-1 PHP的錯誤處理,8-1-1 PHP錯誤處理的基礎8-1-2 exit()與die()的錯誤處理8-1-3 自訂PHP的錯誤處理函數8-1-4 產生使用者的自訂錯誤,8-1 PHP的錯誤處理8-1-1 PHP錯誤處理的基礎,8-1 PHP的錯誤處理,PHP程式的錯誤(Errors)是指程式執行前直譯過程的錯誤,或直譯後執行程式時產生的錯誤,主要分為兩種:環境錯誤(Environmental Errors):環境錯誤也稱為外部錯誤(External

2、 Errors),這是指程式執行環境所導致的錯誤,並不是程式設計的問題。例如:沒有權限無法寫入檔案,或檔案不存在。程式錯誤(Programming Errors):程式錯誤是程式中的臭蟲(Bugs),可能是語法錯誤、語意錯誤或程式邏輯錯誤(Logical Errors)。,8-1 PHP的錯誤處理PHP程式的錯誤(Errors)是指,8-1-1 PHP錯誤處理的基礎-說明,錯誤處理(Error Handling)是一種處理錯誤的機制,可以處理直譯過程的語法和語意錯誤,或執行時的環境錯誤和程式錯誤中的邏輯錯誤。PHP在4.0版之前即提供內建的錯誤處理機制,當錯誤產生時,可以顯示各種不同的PHP錯

3、誤訊息。,8-1-1 PHP錯誤處理的基礎-說明錯誤處理(Error,8-1-1 PHP錯誤處理的基礎-範例,例如:執行Ch8-1-1.php程式,因為require插入檔案不存在的環境錯誤,在執行時就會顯示PHP錯誤訊息:,8-1-1 PHP錯誤處理的基礎-範例例如:執行Ch8-1-,8-1-1 PHP錯誤處理的基礎-四種錯誤等級,Parse Errors:剖析錯誤是指PHP程式碼的語法和語意錯誤,這是執行前,直譯過程產生的錯誤。Fatal Errors:致命錯誤是很嚴重的執行時錯誤,它會導致PHP程式碼終止執行。Warnings:警告錯誤是一種尚能補救且非致命的執行時錯誤,PHP引擎會試圖

4、繼續執行PHP程式碼。Notices:注意錯誤是一種小且非致命的錯誤,只是用來提醒程式碼可能出現的錯誤。例如:沒有初始變數值。,8-1-1 PHP錯誤處理的基礎-四種錯誤等級Parse E,8-1-2 exit()與die()的錯誤處理-方式,基本的錯誤處理方式有:不理會終止程式顯示錯誤訊息寫入記錄檔使用自訂錯誤處理進行補救,8-1-2 exit()與die()的錯誤處理-方式基本的錯,8-1-2 exit()與die()的錯誤處理-說明,PHP程式最簡單的錯誤處理就是使用exit()或die()終止程式執行和顯示一段錯誤訊息。exit()與die()並不是真正的函數,它是PHP的語言建構子(

5、Language Construct),例如:使用PHP的fopen()函數開啟檔案:$fp = fopen($filename, r) / 開啟檔案 or exit(錯誤:檔案$filename開啟錯誤!);,8-1-2 exit()與die()的錯誤處理-說明PHP程,8-1-3 自訂PHP的錯誤處理-設定錯誤等級,PHP提供error_reporting()函數指定PHP程式需要回報的錯誤等級。換句話說,我們可以只回報所需錯誤,而隱藏其他不需要的錯誤:error_reporting(E_ERROR | E_WARNING | E_NOTICE);PHP程式會回報E_ERROR、E_WAR

6、NING 和 E_NOTICE三種錯誤等級。,8-1-3 自訂PHP的錯誤處理-設定錯誤等級PHP提供er,8-1-3 自訂PHP的錯誤處理-錯誤等級常數,8-1-3 自訂PHP的錯誤處理-錯誤等級常數,8-1-3 自訂PHP的錯誤處理-指定錯誤處理函數,在PHP程式可以使用set_error_handler()函數指定一個函數作為錯誤處理:set_error_handler(myErrorHandler);上述程式碼指定參數的函數名稱為錯誤處理函數,即myErrorHandler()函數。,8-1-3 自訂PHP的錯誤處理-指定錯誤處理函數在PHP程,8-1-3 自訂PHP的錯誤處理-錯誤處

7、理函數,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的錯誤處理-錯誤處理函數functio,8-1-3 自訂PHP的錯誤處理-將錯誤訊息寫入記錄檔,PHP程式的錯誤處理函數除了可以顯示錯誤訊息外,還可以呼叫error_log()函數將錯誤訊息寫入檔案:error_log($err, 3

8、, errors.log);函數第1個參數是錯誤訊息的字串,第2個參數是輸出種類的整數值:,8-1-3 自訂PHP的錯誤處理-將錯誤訊息寫入記錄檔PHP,8-1-4 產生使用者的自訂錯誤,在PHP的錯誤等級之中,E_USER_ERROR、E_USER_WARNING和E_USER_NOTICE錯誤等級可以用來建立使用者的自訂錯誤。在PHP程式是呼叫trigger_error()函數產生使用者自訂的錯誤:trigger_error(密碼是空字串!, E_USER_ERROR);上述函數可以產生第1個參數訊息內容的自訂錯誤,在第2個參數指定錯誤等級。,8-1-4 產生使用者的自訂錯誤在PHP的錯誤

9、等級之中,E_,8-2 PHP 5的例外處理,8-2-1 PHP 5的例外處理8-2-2 繼承Exception類別,8-2 PHP 5的例外處理8-2-1 PHP 5的例外處理,8-2-1 PHP 5的例外處理-說明,PHP 5的例外處理(Handling Exceptions)是一種流程控制的程式敘述,可以停止目前程式碼的執行,然後跳到指定區塊來處理錯誤。這些錯誤是一種例外物件(Exception),即在PHP程式執行期間,發生不正常執行狀態或錯誤時所產生的物件。,8-2-1 PHP 5的例外處理-說明PHP 5的例外處理(,8-2-1 PHP 5的例外處理-產生例外物件,PHP內建的Ex

10、ception類別可以建立例外物件,在PHP程式碼是使用throw指令來丟出例外。例如:在PHP程式丟出Exception例外物件:throw new Exception(密碼是空字串!);上述程式碼使用new運算子建立例外物件,建構子方法的第1個參數是例外說明字串,第2個參數是選項的數字錯誤碼。,8-2-1 PHP 5的例外處理-產生例外物件PHP內建的E,8-2-1 PHP 5的例外處理-取得例外資訊,在Exception類別提供數個方法可以取得例外的相關資訊:,8-2-1 PHP 5的例外處理-取得例外資訊在Except,8-2-1 PHP 5的例外處理-例外處理的程式敘述(架構),PH

11、P語言的例外處理程式敘述分成try和catch兩個程式區塊,可以處理特定的例外物件:try catch ( Exception $e ) / 例外處理 ,8-2-1 PHP 5的例外處理-例外處理的程式敘述(架構),8-2-1 PHP 5的例外處理-例外處理的程式敘述(說明),try程式區塊:在try區塊的程式碼檢查是否產生例外,當例外產生時,就會丟出指定例外類型的物件。catch程式區塊:在try程式區塊的程式碼如果丟出例外,PHP程式需要準備catch程式區塊處理例外,傳入參數$e是例外物件,可以取得例外的相關資訊:print 檔案: . $e-getFile() . ;print 行號:

12、 . $e-getLine() . ;print 錯誤訊息: . $e-getMessage() . ;,8-2-1 PHP 5的例外處理-例外處理的程式敘述(說明),8-2-2 繼承Exception類別-說明,在PHP程式除了可以使用現成Exception類別建立例外物件外,我們也可以繼承Exception類別建立自訂的例外子類別,其主要目的如下所示:在try/catch程式敘述可以區分不同錯誤所產生的例外物件。在子類別可以新增所需的成員方法。,8-2-2 繼承Exception類別-說明在PHP程式除了,8-2-2 繼承Exception類別-範例,例如:驗證密碼錯誤的ValidException例外類別宣告:class ValidException extends Exception function getMyMessage() print 檔案: .$this-getFile().; print 行號: .$this-getLine().; print 錯誤訊息: . $this-getMessage().; ,8-2-2 繼承Exception類別-範例例如:驗證密碼錯,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号