一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP 面向?qū)ο蟪绦蛟O(shè)計(oop)學(xué)習(xí)筆記 (四) - 異常處理類Exception

使用異常

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

預(yù)定義異常 Exception

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

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

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

復(fù)制代碼 代碼如下:
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.”。或許你想還想顯示數(shù)據(jù)庫連接失敗的原因信息。下面及通過擴展exception類來實現(xiàn)我們的自定義信息。

復(fù)制代碼 代碼如下:
class MyException extends Exception
{
    protected $ErrorInfo;
    //構(gòu)造函里處理一些邏輯,然后將一些信息傳遞給基類
    public function __construct($message=null,$code=0)
    {
        $this->ErrorInfo = '自定義錯誤類的錯誤信息';
        parent::__construct($message,$code);
    }   
    //提供獲取自定義類信息的方法
    public function GetErrorInfo()
    {
        return $this->ErrorInfo;
    }
    /**
     *
     *這里還可以添加異常日志,只需在上面的構(gòu)造函數(shù)里調(diào)用就可以了
     *
     */
    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 設(shè)置一個用戶定義的異常處理函數(shù)

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

復(fù)制代碼 代碼如下:
function ExceptionLogger($exception)
{
    $file='ExceptionLog.log';
    file_put_contents($fiel,$exception->__toString(),FILE_APPEND);
}
set_exception_handler(ExceptionLogger);

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

復(fù)制代碼 代碼如下:
try
{
    #code...
}
catch(Exception $e)
{
    if($e->getCode() == 999)
    {
        #進行一些操作
    }
    else
    {
        throw $e;
    }
}

總結(jié)

異常的功能非常強大,但是不以為著我們可以在項目中肆意的濫用異常機制,特別是大量使用異常日志的機制,這回大大增加系統(tǒng)系統(tǒng)開銷降低應(yīng)用程序的性能。利用錯誤代碼我們可以方便的對錯誤信息進行管理,當(dāng)一個錯誤信息被多次平拋出時,使用錯誤代碼是科學(xué)的選擇。我們甚至可以通過錯誤代碼來讓錯誤消息也支持多語言顯示。

php技術(shù)PHP 面向?qū)ο蟪绦蛟O(shè)計(oop)學(xué)習(xí)筆記 (四) - 異常處理類Exception,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 日本wwwww视频 | 亚洲乱码在线 | 亚洲小视频在线 | 偷自在线| 青青草国产精品久久久久 | 91国内揄拍·国内精品对白 | 国产这里有精品 | 亚洲精品午夜视频 | 免费a资源 | 亚洲永久网站 | 国产成人啪精品午夜在线播放 | 日韩中文字幕免费观看 | 激情亚洲小说 | 一道本加勒比 | 国产精品免费入口视频 | 好色123 | 国产成人亚洲综合无 | 亚洲美女福利视频 | 国产一区二区三区在线看 | 99热在这里只有免费精品 | 国产精品自在线拍国产 | 欧美xxxx做受欧美人妖 | 婷婷色视频 | 男人靠女人视频无遮挡大全 | 欧美视频在线观 | 好吊操视频这里只有精品 | 亚洲免费二区三区 | 美女视频黄频大全免费视频 | 久久久久久久久网站 | 99在线观看精品视频 | 成年美女黄网站色大片图片 | 好吊日在线 | 国产成人污污网站在线观看 | 中文字幕久久久久久久系列 | 国产视频第二页 | 色图片小说 | 国产人成亚洲第一网站在线播放 | 日韩欧美区 | 网红主播大尺度精品福利视频 | 日韩精品一区二区三区视频网 | 牛牛热在线视频 |