在php中,可以利用異常處理類別「Exception」中內建的各種成員函數來取得並傳回異常數據,例如getMessage()函數就可以傳回異常的訊息內容;也可以透過「try catch」語句和「throw」關鍵字來捕捉程式中的例外。
本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦
PHP 中的例外處理類別
PHP 中提供了內建的例外處理類別-Exception,該類別中常用的成員函數如下所示:
getMessage():傳回例外的訊息內容;
getCode():以數字形式傳回異常碼;
Exception { /* 属性 */ protected string $message ; protected int $code ; protected string $file ; protected int $line ; /* 方法 */ public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] ) final public getMessage ( void ) : string final public getPrevious ( void ) : Throwable final public getCode ( void ) : int final public getFile ( void ) : string final public getLine ( void ) : int final public getTrace ( void ) : array final public getTraceAsString ( void ) : string public __toString ( void ) : string final private __clone ( void ) : void }
擷取程式中的例外
在 PHP 中想要擷取程式中的例外,需要使用 try catch 語句和 throw 關鍵字來實作。 try catch 語句和流程控制語句類似,所以可以透過 try catch 語句來實作一種另類的條件選擇結構,而 throw 關鍵字可以拋出一個例外。 try catch 語句的語法格式如下:try{ // 可能出现异常或错误的代码,比如文件操作、数据库操作等 }catch(Exception $e){ // $e 为一个异常类的对象 // 输出错误信息 }需要進行例外處理的程式碼都必須放入 try 程式碼區塊內,以便擷取可能存在的例外。每一個 try 至少要有一個對應的 catch。使用多個 catch 可以捕捉不同的類別所產生的異常。 當 try 程式碼區塊不再拋出例外或找不到 catch 能匹配所拋出的例外時,PHP 程式碼就會在跳到最後一個 catch 的後面繼續執行。 在 PHP 程式碼中所產生的例外可以被 throw 語句拋出並被 catch 語句捕捉。當然,PHP 允許在 catch 程式碼區塊內再次拋出(throw)異常。 當一個例外被拋出時,其後的程式碼不會再繼續執行,而 PHP 就會嘗試繼續找第一個能與之相符的 catch。如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,將會產生一個嚴重的錯誤,並且輸出 UncaughtException...(未捕獲異常)的提示訊息。 【範例】使用 try catch 和 throw 擷取程式中的例外狀況。
<?php try{ $err = '抛出异常信息,并跳出 try 语句块'; if(is_dir('./test')){ echo '这里是一些可能会发生异常的代码'; }else{ throw new Exception($err, 12345); // 抛出异常 } echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>'; }catch(Exception $e){ echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>'; } echo '继续执行 try catch 语句之外的代码'; ?>運行結果如下:
捕获异常:抛出异常信息,并跳出 try 语句块 错误代码:12345 继续执行 try catch 语句之外的代码範例程式碼中,在try 語句區塊中試著判斷目前目錄下是否存在名為test 的目錄,如果不存在這個目錄,那麼就會執行第7 行的程式碼,透過關鍵字throw 拋出例外。這個異常是一個 Exception 類別的對象,透過 new 關鍵字生成,並且用錯誤訊息 $err 和錯誤代碼 12345 初始化該對象,以便後面 catch 該異常時(代碼第 11 行),可以獲取這些資訊。 一旦拋出異常,那麼try 語句區塊中剩餘的程式碼就不再繼續執行,程式流程轉到對應的catch 語句區塊執行,最終透過Exception 物件呼叫其成員函數輸出錯誤訊息和程式碼。 推薦學習:《
PHP影片教學》
以上是php怎麼進行錯誤和異常處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!