亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何理解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

勃利县| 古交市| 育儿| 太仆寺旗| 汽车| 永城市| 西盟| 天门市| 明水县| 大英县| 高清| 大石桥市| 泰安市| 越西县| 横山县| 马公市| 北辰区| 昆山市| 苏尼特左旗| 高平市| 和林格尔县| 靖宇县| 东乡| 陆川县| 吉首市| 岳阳县| 枣阳市| 微山县| 应用必备| 壤塘县| 调兵山市| 馆陶县| 新泰市| 裕民县| 清丰县| 静海县| 南丰县| 湄潭县| 浑源县| 玉环县| 理塘县|