国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記 (四) - 異常處理類Exception

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

2020-07-04 14:14PHP教程網(wǎng) PHP教程

異常經(jīng)常被用來(lái)處理一些在程序正常執(zhí)行中遇到的各種類型的錯(cuò)誤。比如做數(shù)據(jù)庫(kù)鏈接時(shí),你就要處理數(shù)據(jù)庫(kù)連接失敗的情況。使用異常可以提高我們程序的容錯(cuò)特性,從而使我們的應(yīng)用程序更加的穩(wěn)定和健壯。

使用異常

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

預(yù)定義異常 Exception

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

 

復(fù)制代碼 代碼如下:

Exception {
    /* 屬性 */
    protected string $message ;        //異常消息內(nèi)容
    protected int $code ;            //異常代碼
    protected string $file ;        //拋出異常的文件名
    protected int $line ;            //拋出異常在該文件中的行號(hào)
    /* 方法 */
    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 )        //返回異常鏈中的前一個(gè)異常
    final public int getCode ( void )                //獲取異常代碼
    final public string getFile ( void )            //獲取發(fā)生異常的程序文件名稱
    final public int getLine ( void )                //獲取發(fā)生異常的代碼在文件中的行號(hào)
    final public array getTrace ( void )            //獲取異常追蹤信息
    final public string getTraceAsString ( void )    //獲取字符串類型的異常追蹤信息
    public string __toString ( void )                //將異常對(duì)象轉(zhuǎn)換為字符串
    final private void __clone ( void )                //異常克隆
}

 

了解完 Exception 后,我們來(lái)嘗試擴(kuò)展 exception 類來(lái)實(shí)現(xiàn)一個(gè)自定義異常。

 

復(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();
}

 

這里我們拋出類一個(gè) Exception 類型的異常,并在catch里捕獲了這個(gè)異常,最終打印出了“could not connect to the database.”。或許你想還想顯示數(shù)據(jù)庫(kù)連接失敗的原因信息。下面及通過(guò)擴(kuò)展exception類來(lái)實(shí)現(xiàn)我們的自定義信息。

 

復(fù)制代碼 代碼如下:

class MyException extends Exception
{
    protected $ErrorInfo;
    //構(gòu)造函里處理一些邏輯,然后將一些信息傳遞給基類
    public function __construct($message=null,$code=0)
    {
        $this->ErrorInfo = '自定義錯(cuò)誤類的錯(cuò)誤信息';
        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è)置一個(gè)用戶定義的異常處理函數(shù)

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

 

復(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)
    {
        #進(jìn)行一些操作
    }
    else
    {
        throw $e;
    }
}

 

總結(jié)

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产区视频在线观看 | 日韩国产 | 精品1区2区 | 欧美二区三区 | 最近2019中文字幕大全视频10 | 国产男女免费视频 | 欧美14一18处毛片 | 精品在线看 | 中文字幕综合在线 | 一区二区三区在线观看视频 | 99热激情 | 欧美精品一区二区三区四区 | 国产黄色小视频 | 欧洲精品 | 色婷婷综合久久久中文字幕 | 午夜精品久久久久久久久久久久 | 91午夜视频| 日本中文字幕在线视频 | 三级黄色片在线免费观看 | 国产精品成人一区二区三区 | 亚洲二区在线观看 | 久久亚洲欧美日韩精品专区 | 日韩一区在线视频 | jav久久亚洲欧美精品 | 欧美午夜精品久久久久免费视 | 成人免费一区二区三区视频网站 | 久久久久久久久国产精品 | 国产精品视频网站 | 天天艹视频 | 精品国产资源 | 国产精品高清在线 | 亚洲黄色片免费观看 | 色婷婷精品国产一区二区三区 | 国户精品久久久久久久久久久不卡 | 精品成人在线视频 | 国内毛片 | 久久久99精品免费观看 | 亚洲精品成人 | 国产片av在线永久免费观看 | 中文在线一区 | 久草在线 |