摘要:構(gòu)造異常的子類。代碼的邏輯功能部分如何使用異常的子類文件權(quán)限或文件不存在文件損壞錯(cuò)誤的文件格式后備捕捉器,正常情況下不應(yīng)該被調(diào)用。這樣,可以在細(xì)化的子句中,針對(duì)不同的錯(cuò)誤使用不同的恢復(fù)或失敗機(jī)制。參考深入,面向?qū)ο竽J脚c實(shí)踐
構(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) { // 錯(cuò)誤的XML文件格式 } catch (Exception $e) { // 后備捕捉器,正常情況下不應(yīng)該被調(diào)用。 } } }
這樣,可以在細(xì)化的catch子句中,針對(duì)不同的錯(cuò)誤使用不同的恢復(fù)或失敗機(jī)制??梢詻Q定停止執(zhí)行程序、記錄錯(cuò)誤、并繼續(xù)執(zhí)行程序,或顯式地再次拋出錯(cuò)誤。
try { // ... } catch (FileException $e) { throw $e; }
參考
深入PHP,面向?qū)ο?、模式與實(shí)踐
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21655.html
摘要:現(xiàn)代的面向?qū)ο蟮乃枷氩粡?qiáng)調(diào)為真實(shí)世界建模變得更加理性化一些,把目標(biāo)放在解耦上。各種語言中的多態(tài)多態(tài)確切的含義是同一類的對(duì)象收到相同消息時(shí),會(huì)得到不同的結(jié)果。小結(jié)本章主要介紹面向?qū)ο笏枷氲某绦虻慕M成元素類和對(duì)象。 第一章 面向?qū)ο笏枷氲暮诵母拍?showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:關(guān)于異常處理的文章已有相當(dāng)?shù)钠?,本文?jiǎn)單總結(jié)了的異常處理機(jī)制,并結(jié)合代碼分析了一些異常處理的最佳實(shí)踐,對(duì)異常的性能開銷進(jìn)行了簡(jiǎn)單分析。是程序正常運(yùn)行中,可以預(yù)料的意外情況,應(yīng)該被捕獲并進(jìn)行相應(yīng)處理。 關(guān)于異常處理的文章已有相當(dāng)?shù)钠?,本文?jiǎn)單總結(jié)了Java的異常處理機(jī)制,并結(jié)合代碼分析了一些異常處理的最佳實(shí)踐,對(duì)異常的性能開銷進(jìn)行了簡(jiǎn)單分析。博客另一篇文章《[譯]Java異常處理的最...
摘要:無需檢查的異常也是的子類。從低層拋出的需檢查異常強(qiáng)制要求調(diào)用方捕獲或是拋出該異常。當(dāng)前執(zhí)行的線程將會(huì)停止并報(bào)告該異常。單元測(cè)試允許我在使用中查看異常,并且作為一個(gè)可以被執(zhí)行的文檔來使用。不要捕獲最高層異常繼承的異常同樣是的子類。 前言 異常處理的問題之一是知道何時(shí)以及如何去使用它。我會(huì)討論一些異常處理的最佳實(shí)踐,也會(huì)總結(jié)最近在異常處理上的一些爭(zhēng)論。 作為程序員,我們想要寫高質(zhì)量的能夠解...
摘要:異常處理的個(gè)最佳實(shí)踐原文地址翻譯出處在中,異常處理是個(gè)很麻煩的事情。使用描述性消息拋出異常這個(gè)最佳實(shí)踐背后的想法與前兩個(gè)類似。當(dāng)你以錯(cuò)誤的格式提供時(shí),它將被類的構(gòu)造函數(shù)拋出。類提供了特殊的構(gòu)造函數(shù)方法,它接受一個(gè)作為參數(shù)。 Java 異常處理的 9 個(gè)最佳實(shí)踐 原文地址:https://dzone.com/articles/9-...翻譯出處:https://www.oschina.n...
摘要:然而,我更傾向于使用來單元測(cè)試來文檔化異常。單元測(cè)試允許我在使用中查看異常,并且作為一個(gè)可以被執(zhí)行的文檔來使用。通過為異常編寫單元測(cè)試,你不僅可以記錄異常如何觸發(fā),還可以使你的代碼在經(jīng)過這些測(cè)試后更加健壯。 本文是關(guān)于 Exception 處理的一篇不錯(cuò)的文章,從 Java Exception 的概念介紹起,依次講解了 Exception 的類型(Checked/Unchecked),...
閱讀 1363·2021-11-22 13:54
閱讀 2501·2021-09-22 15:36
閱讀 2817·2019-08-30 15:54
閱讀 863·2019-08-30 15:53
閱讀 3227·2019-08-30 15:53
閱讀 588·2019-08-29 15:21
閱讀 2925·2019-08-28 18:28
閱讀 3109·2019-08-26 13:37