天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP 面向對象程序設計(oop)學習筆記 (四) - 異常處理類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技術PHP 面向對象程序設計(oop)學習筆記 (四) - 異常處理類Exception,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 最新高清无码专区在线视频 | 好男人在线高清WWW免费观看 | 久草色香蕉视频在线 | 相声flash| 快穿女主有名器的H纯肉黄暴拉文 | 99久久免费精品 | 夜月视频直播免费观看 | 免费观看亚洲视频 | 男人和女人一起愁愁愁很痛 | 国产欧美日韩精品a在线观看高清 | 国产精一品亚洲二区在线播放 | 日本大片免a费观看视频 | 久久精品热99看二 | 国产亚洲国际精品福利 | 久久精品无码成人国产毛 | 日本又黄又裸一级大黄裸片 | 草莓西瓜樱桃香蕉直播视频 | 久久99精品久久久久久园产越南 | 男人把女人桶到爽免费看视频 | 色色噜一噜 | 久久精品视频在线看 | 国产亚洲精品久久久无码狼牙套 | 日本ccc三级 | 国产成人高清精品免费5388密 | YY8090福利午夜理论片 | 亚洲无线观看国产 | 动听968| 中文字幕亚洲欧美日韩2o19 | 办公室韩国电影免费完整版 | 三级黄色一级视频 | 国产精品青青草原app大全 | 免费观看男生桶美女私人部位 | 色WWW永久免费视频首页 | 国产亚洲精品久久无码98 | 日本乱hd高清videos | 亚洲欧美中文在线一区 | 影音先锋色av男人资源网 | 久久久久国产精品嫩草影院 | 乌克兰18性hd| 嫩草AV久久伊人妇女 | 久久精品免费看网站 |