成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP|異常的使用,異常子類化的最佳實踐

李濤 / 2113人閱讀

摘要:構(gòu)造異常的子類。代碼的邏輯功能部分如何使用異常的子類文件權(quán)限或文件不存在文件損壞錯誤的文件格式后備捕捉器,正常情況下不應(yīng)該被調(diào)用。這樣,可以在細(xì)化的子句中,針對不同的錯誤使用不同的恢復(fù)或失敗機制。參考深入,面向?qū)ο竽J脚c實踐

構(gòu)造異常的子類。
class XmlException extends Exception
{
    private $error;
    
    function __construct(LibXmlError $error) {
        $shortfile = basename($error->file);
        $msg = "[{$shortfile}, line {$error->line}, col {$error->column} {$error->message}]";
        $this->error = $error;
        parent::__construct(%msg, $error->code);
    }
    
    function getLibXmlError() {
        return $this->error
    }
}

class FileException extends Exception{}
class ConfException extends Exception{}
代碼的邏輯功能部分
// Conf Class
function __construct($file) {
    $this->file = $file;
    if (!file_exists($file)) {
        throw new FileException();
    }
    
    $this->xml = simplexml_load_file($file, null, LIBXML_NOERROR);
    if (!is_object($this->xml)) {
        throw new XmlException();
    }
    
    print gettype($this->xml);
    $matches = $this->xml->xpath("/conf");
    if (!count($matches)) {
        throw new ConfException();
    }
}

function write() {
    if (!is_writeable($this->file)) {
        throw new FileException("");
    }
    file_put_contents($this->file, $this->xml->asXML());
}
如何使用異常的子類?
class Runner 
{
    static function init() {
        try {
        
        } catch (FileException $e) {
            // 文件權(quán)限或文件不存在
        } catch (XmlException $e) {
            // XML文件損壞
        } catch (ConfException $e) {
            // 錯誤的XML文件格式
        } catch (Exception $e) {
            // 后備捕捉器,正常情況下不應(yīng)該被調(diào)用。
        }
    }
}

這樣,可以在細(xì)化的catch子句中,針對不同的錯誤使用不同的恢復(fù)或失敗機制??梢詻Q定停止執(zhí)行程序、記錄錯誤、并繼續(xù)執(zhí)行程序,或顯式地再次拋出錯誤。

try {
    // ...
} catch (FileException $e) {
    throw $e;
}

參考

深入PHP,面向?qū)ο蟆⒛J脚c實踐

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21655.html

相關(guān)文章

  • PHP核心技術(shù)與最佳實踐(第一章 面向?qū)ο笏枷?em>的核心概念)

    摘要:現(xiàn)代的面向?qū)ο蟮乃枷氩粡娬{(diào)為真實世界建模變得更加理性化一些,把目標(biāo)放在解耦上。各種語言中的多態(tài)多態(tài)確切的含義是同一類的對象收到相同消息時,會得到不同的結(jié)果。小結(jié)本章主要介紹面向?qū)ο笏枷氲某绦虻慕M成元素類和對象。 第一章 面向?qū)ο笏枷氲暮诵母拍?showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...

    dreamGong 評論0 收藏0
  • 淺析Java異常處理機制

    摘要:關(guān)于異常處理的文章已有相當(dāng)?shù)钠?,本文簡單總結(jié)了的異常處理機制,并結(jié)合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進(jìn)行了簡單分析。是程序正常運行中,可以預(yù)料的意外情況,應(yīng)該被捕獲并進(jìn)行相應(yīng)處理。 關(guān)于異常處理的文章已有相當(dāng)?shù)钠疚暮唵慰偨Y(jié)了Java的異常處理機制,并結(jié)合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進(jìn)行了簡單分析。博客另一篇文章《[譯]Java異常處理的最...

    NSFish 評論0 收藏0
  • 貓頭鷹深夜翻譯:JAVA中異常處理最佳實踐

    摘要:無需檢查的異常也是的子類。從低層拋出的需檢查異常強制要求調(diào)用方捕獲或是拋出該異常。當(dāng)前執(zhí)行的線程將會停止并報告該異常。單元測試允許我在使用中查看異常,并且作為一個可以被執(zhí)行的文檔來使用。不要捕獲最高層異常繼承的異常同樣是的子類。 前言 異常處理的問題之一是知道何時以及如何去使用它。我會討論一些異常處理的最佳實踐,也會總結(jié)最近在異常處理上的一些爭論。 作為程序員,我們想要寫高質(zhì)量的能夠解...

    W_BinaryTree 評論0 收藏0
  • Java 異常處理 9 個最佳實踐

    摘要:異常處理的個最佳實踐原文地址翻譯出處在中,異常處理是個很麻煩的事情。使用描述性消息拋出異常這個最佳實踐背后的想法與前兩個類似。當(dāng)你以錯誤的格式提供時,它將被類的構(gòu)造函數(shù)拋出。類提供了特殊的構(gòu)造函數(shù)方法,它接受一個作為參數(shù)。 Java 異常處理的 9 個最佳實踐 原文地址:https://dzone.com/articles/9-...翻譯出處:https://www.oschina.n...

    sihai 評論0 收藏0
  • Java異常處理最佳實踐

    摘要:然而,我更傾向于使用來單元測試來文檔化異常。單元測試允許我在使用中查看異常,并且作為一個可以被執(zhí)行的文檔來使用。通過為異常編寫單元測試,你不僅可以記錄異常如何觸發(fā),還可以使你的代碼在經(jīng)過這些測試后更加健壯。 本文是關(guān)于 Exception 處理的一篇不錯的文章,從 Java Exception 的概念介紹起,依次講解了 Exception 的類型(Checked/Unchecked),...

    mayaohua 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<