PHP|异常的使用,异常子类化的最佳实践
生活随笔
收集整理的這篇文章主要介紹了
PHP|异常的使用,异常子类化的最佳实践
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
構(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ī)制。可以決定停止執(zhí)行程序、記錄錯(cuò)誤、并繼續(xù)執(zhí)行程序,或顯式地再次拋出錯(cuò)誤。
try {// ... } catch (FileException $e) {throw $e; }參考
深入PHP,面向?qū)ο蟆⒛J脚c實(shí)踐
總結(jié)
以上是生活随笔為你收集整理的PHP|异常的使用,异常子类化的最佳实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenJudge 2796: 数字求和
- 下一篇: iOS 事件传递响应链