摘要:構造異常的子類。代碼的邏輯功能部分如何使用異常的子類文件權限或文件不存在文件損壞錯誤的文件格式后備捕捉器,正常情況下不應該被調用。這樣,可以在細化的子句中,針對不同的錯誤使用不同的恢復或失敗機制。參考深入,面向對象模式與實踐
構造異常的子類。
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) { // 文件權限或文件不存在 } catch (XmlException $e) { // XML文件損壞 } catch (ConfException $e) { // 錯誤的XML文件格式 } catch (Exception $e) { // 后備捕捉器,正常情況下不應該被調用。 } } }
這樣,可以在細化的catch子句中,針對不同的錯誤使用不同的恢復或失敗機制。可以決定停止執行程序、記錄錯誤、并繼續執行程序,或顯式地再次拋出錯誤。
try { // ... } catch (FileException $e) { throw $e; }
參考
深入PHP,面向對象、模式與實踐
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21655.html
摘要:現代的面向對象的思想不強調為真實世界建模變得更加理性化一些,把目標放在解耦上。各種語言中的多態多態確切的含義是同一類的對象收到相同消息時,會得到不同的結果。小結本章主要介紹面向對象思想的程序的組成元素類和對象。 第一章 面向對象思想的核心概念 showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:關于異常處理的文章已有相當的篇幅,本文簡單總結了的異常處理機制,并結合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進行了簡單分析。是程序正常運行中,可以預料的意外情況,應該被捕獲并進行相應處理。 關于異常處理的文章已有相當的篇幅,本文簡單總結了Java的異常處理機制,并結合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進行了簡單分析。博客另一篇文章《[譯]Java異常處理的最...
摘要:無需檢查的異常也是的子類。從低層拋出的需檢查異常強制要求調用方捕獲或是拋出該異常。當前執行的線程將會停止并報告該異常。單元測試允許我在使用中查看異常,并且作為一個可以被執行的文檔來使用。不要捕獲最高層異常繼承的異常同樣是的子類。 前言 異常處理的問題之一是知道何時以及如何去使用它。我會討論一些異常處理的最佳實踐,也會總結最近在異常處理上的一些爭論。 作為程序員,我們想要寫高質量的能夠解...
摘要:異常處理的個最佳實踐原文地址翻譯出處在中,異常處理是個很麻煩的事情。使用描述性消息拋出異常這個最佳實踐背后的想法與前兩個類似。當你以錯誤的格式提供時,它將被類的構造函數拋出。類提供了特殊的構造函數方法,它接受一個作為參數。 Java 異常處理的 9 個最佳實踐 原文地址:https://dzone.com/articles/9-...翻譯出處:https://www.oschina.n...
摘要:然而,我更傾向于使用來單元測試來文檔化異常。單元測試允許我在使用中查看異常,并且作為一個可以被執行的文檔來使用。通過為異常編寫單元測試,你不僅可以記錄異常如何觸發,還可以使你的代碼在經過這些測試后更加健壯。 本文是關于 Exception 處理的一篇不錯的文章,從 Java Exception 的概念介紹起,依次講解了 Exception 的類型(Checked/Unchecked),...
閱讀 1180·2021-11-22 13:54
閱讀 2428·2021-09-22 15:36
閱讀 2735·2019-08-30 15:54
閱讀 802·2019-08-30 15:53
閱讀 3168·2019-08-30 15:53
閱讀 515·2019-08-29 15:21
閱讀 2862·2019-08-28 18:28
閱讀 3004·2019-08-26 13:37