在php中,可以利用異常處理類別「Exception」中內建的各種成員函數來取得並傳回異常數據,例如getMessage()函數就可以傳回異常的訊息內容;也可以透過「try catch」語句和「throw」關鍵字來捕捉程式中的例外。
本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦
PHP 中的例外處理類別
PHP 中提供了內建的例外處理類別-Exception,該類別中常用的成員函數如下所示:
getMessage():傳回例外的訊息內容;
getCode():以數字形式傳回異常碼;
- ##getFile():傳回發生異常的檔案名稱;
- getLine():傳回發生錯誤的程式碼行號;
- #getTrace():傳回backtrace() 陣列;
- getTraceAsString():傳回已格式化成字串的、由函數getTrace() 函數所產生的資訊;
- __toString():產生例外的字串訊息,它可以重載。注意,函數最前部是兩個底線。
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中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具