91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何理解PHP面向對象程序設計異常處理類Exception

發布時間:2021-09-29 10:41:34 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

這篇文章主要介紹“如何理解PHP面向對象程序設計異常處理類Exception”,在日常操作中,相信很多人在如何理解PHP面向對象程序設計異常處理類Exception問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解PHP面向對象程序設計異常處理類Exception”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

使用異常

PHP5 增加了類似其他語言的異常處理模塊。在PHP代碼中所產生的異常可被 throw 語句拋出并被 catch 語句捕獲。需要進行異常處理的代碼都必須放入到 try 代碼塊內,以便捕獲可能存在的異常。每個try至少對應一個 catch 塊。使用多個 catch 可以捕獲不同的類所產生的異常。當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最后一個 catch 的后面繼續執行。當然,PHP 允許在 catch 代碼塊內再次拋出(throw)異常。

預定義異常 Exception

Exception 類是所有異常的基類,我們可以通過派生 Exception 類來達到自定義異常的目的。下面的清單列出了 Exception 的基本信息。

復制代碼 代碼如下:

Exception {
    /* 屬性 */
    protected string $message ;        //異常消息內容
    protected int $code ;            //異常代碼
    protected string $file ;        //拋出異常的文件名
    protected int $line ;            //拋出異常在該文件中的行號
    /* 方法 */
    public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )    //異常構造函數
    final public string getMessage ( void )            //獲取異常消息內容
    final public Exception getPrevious ( void )        //返回異常鏈中的前一個異常
    final public int getCode ( void )                //獲取異常代碼
    final public string getFile ( void )            //獲取發生異常的程序文件名稱
    final public int getLine ( void )                //獲取發生異常的代碼在文件中的行號
    final public array getTrace ( void )            //獲取異常追蹤信息
    final public string getTraceAsString ( void )    //獲取字符串類型的異常追蹤信息
    public string __toString ( void )                //將異常對象轉換為字符串
    final private void __clone ( void )                //異常克隆
}

了解完 Exception 后,我們來嘗試擴展 exception 類來實現一個自定義異常。

復制代碼 代碼如下:


function connectToDatabase()
{   
    if(!$link = mysql_connect("myhost","myuser","mypassw","mybd"))
    {
        throw new Exception("could not connect to the database.");
    }
}
try
{
    connectToDatabase();
}
catch(Exception $e)
{echo $e->getMessage();
}

這里我們拋出類一個 Exception 類型的異常,并在catch里捕獲了這個異常,最終打印出了“could not connect to the database.”。或許你想還想顯示數據庫連接失敗的原因信息。下面及通過擴展exception類來實現我們的自定義信息。

復制代碼 代碼如下:


class MyException extends Exception
{
    protected $ErrorInfo;
    //構造函里處理一些邏輯,然后將一些信息傳遞給基類
    public function __construct($message=null,$code=0)
    {
        $this->ErrorInfo = '自定義錯誤類的錯誤信息';
        parent::__construct($message,$code);
    }   
    //提供獲取自定義類信息的方法
    public function GetErrorInfo()
    {
        return $this->ErrorInfo;
    }
    /**
     *
     *這里還可以添加異常日志,只需在上面的構造函數里調用就可以了
     *
     */
    public function log($file)
    {
        file_put_contents($fiel,$this->__toString(),FILE_APPEND);
    }
}
function connectToDatabase()
{   
    throw new MyException("ErrorMessage");
}
try
{   
    connectToDatabase();
}
catch(MyException $e)
{   
    echo $e->getMessage() . "\n";
    echo $e->GetErrorInfo();
}

set_exception_handler 設置一個用戶定義的異常處理函數

當一個未捕獲的異常發生時所調用的函數名稱作為set_exception_handler的參數。該函數必須在調用set_exception_handler()之前被定義。該函數接受一個參數,該參數是一個拋出的異常對象。這可以用來改進上邊提到的異常記錄日志處理。

復制代碼 代碼如下:


function ExceptionLogger($exception)
{
    $file='ExceptionLog.log';
    file_put_contents($fiel,$exception->__toString(),FILE_APPEND);
}
set_exception_handler(ExceptionLogger);

1.3、PHP 允許在 catch 代碼塊內再次拋出(throw)異常。

復制代碼 代碼如下:


try
{
    #code...
}
catch(Exception $e)
{
    if($e->getCode() == 999)
    {
        #進行一些操作
    }
    else
    {
        throw $e;
    }
}

到此,關于“如何理解PHP面向對象程序設計異常處理類Exception”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

雅江县| 花莲市| 房山区| 海南省| 泗水县| 南靖县| 丹巴县| 长阳| 定日县| 沁水县| 三台县| 上栗县| 乌审旗| 托克逊县| 东阳市| 海晏县| 文山县| 七台河市| 玉田县| 沙河市| 张家港市| 富平县| 福海县| 陵川县| 台南市| 莎车县| 清水河县| 新余市| 新河县| 南部县| 陇南市| 肥东县| 西乌| 千阳县| 林周县| 富顺县| 宜良县| 红安县| 巴林右旗| 正阳县| 乃东县|