PHP 错误与异常 笔记与总结(13 )自定义异常类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP 错误与异常 笔记与总结(13 )自定义异常类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4132字,纯文字阅读大概需要6分钟。
内容图文
针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常。自定义异常类通过继承基类(Exception),对基类进行扩展。
自定义异常类
1 <?php 2header(‘content-type:text/html; charset=utf-8‘); 3/* 4 自定义异常类 5*/ 6class MyException extendsException{ 7//重写父类构造函数 8publicfunction __contruct($message, $code = 0){ 9 parent::__contruct($message, $code); 10 } 1112//重写 __toString 方法13publicfunction __toString(){ 14$message = ‘<h2>出现异常,信息如下:</h2>‘; 15$message .= ‘<p>‘.__CLASS__.‘ [‘.$this->code.‘]:‘.$this->message.‘</p>‘; 16return$message; 17 } 1819//自定义方法20publicfunction test(){ 21echo ‘test.‘; 22 } 2324publicfunction stop(){ 25exit(‘script end....‘); 26 } 27 } 2829try{ 30echo ‘出现异常...‘; 31thrownew MyException(‘测试自定义异常‘, 3); 32 }catch(MyException $e){ 33//输出:测试自定义异常34echo$e->getMessage(); 35echo ‘<hr>‘; 3637//__toString38echo$e; 39echo ‘<hr>‘; 4041//自定义方法test()42echo$e->test(); 43echo ‘<hr>‘; 4445//自定义方法stop()46echo$e->stop(); 47echo ‘<hr>‘; 48 } 4950echo ‘continue‘;
输出:
多个 catch 进行捕获
当程序捕获一个个异常时,就不会再进行后面的 catch 分支了,而是直接执行 try{}catch(){} 以后的代码。在捕获多个异常时,应该把基类 Exception 放到最后捕获。例:
1 <?php 2header(‘content-type:text/html; charset=utf-8‘); 3/* 4 自定义异常类 5*/ 6class MyException extendsException{ 7//重写父类构造函数 8publicfunction __contruct($message, $code = 0){ 9 parent::__contruct($message, $code); 10 } 1112//重写 __toString 方法13publicfunction __toString(){ 14$message = ‘<h2>出现异常,信息如下:</h2>‘; 15$message .= ‘<p>‘.__CLASS__.‘ [‘.$this->code.‘]:‘.$this->message.‘</p>‘; 16return$message; 17 } 1819//自定义方法20publicfunction test(){ 21echo ‘test.‘; 22 } 2324publicfunction stop(){ 25exit(‘script end....‘); 26 } 27 } 2829try{ 30thrownew MyException(‘测试自定义异常‘); 31 }catch(MyException $e){ 32echo$e->getMessage(); 33//调用自定义方法test()34$e->test(); 35echo ‘<hr>‘; 3637//调用自定义方法stop()38$e->stop(); 39echo ‘<hr>‘; 40 }catch(Exception$e){ 41echo$e->getMessage(); 42 } 4344echo ‘<hr>‘; 45echo ‘continue‘;
输出:
【例】自定义 文件写入异常处理类
① 测试 “文件不存在”:
WriteToFile.php
1 <?php 2header(‘content-type:text/html; charset=utf-8‘); 3/* 4 自定义文件写入异常类 5*/ 6class FileException extendsException{ 7//自定义方法 8publicfunction getDetails(){ 9$code = ‘错误码[‘.$this->code.‘] ‘; 10switch($this->code){ 11case 0: 12return$code.‘没有提供文件‘; 13break; 14case 1: 15return$code.‘文件不存在‘; 16break; 17case 2: 18return$code.‘不是一个文件‘; 19break; 20case 3: 21return$code.‘文件不可写‘; 22break; 23case 4: 24return$code.‘非法的文件操作模式‘; 25break; 26case 5: 27return$code.‘文件写入失败‘; 28break; 29case 6: 30return$code.‘文件不能被关闭‘; 31break; 32default: 33return$code.‘非法‘; 34break; 35 } 36 } 37} 3839/*40 写入文件的类 41*/42class WriteData{ 43private$_message = ‘‘; 44private$_fp = null; //文件句柄45publicfunction __construct($filename = null, $mode = ‘w‘){ 46$this->_message = "文件:{$filename}<br>模式:{$mode}"; 47if(empty($filename)) thrownew FileException($this->_message, 0); 48if(!file_exists($filename)) thrownew FileException($this->_message, 1); 49if(!is_file($filename)) thrownew FileException($this->_message, 2); 50if(!is_writeable($filename)) thrownew FileException($this->_message, 3); 51if(!in_array($mode, array(‘w‘, ‘w+‘, ‘a‘, ‘a+‘))) thrownew FileException($this->_message, 4); 52$this->_fp = fopen($filename, $mode); 53 } 54//写文件55publicfunction write($data){ 56if(@!fwrite($this->_fp, $data.PHP_EOL)) thrownew FileException($this->_message.‘数据写入失败‘, 5); 57 } 5859//关闭资源句柄60publicfunction close(){ 61if($this->_fp){ 62if(@!fclose($this->_fp)) thrownew FileException($this->_message.‘文件关闭失败‘, 6); 63$this->_fp = null; 64 } 65 } 6667//析构方法68publicfunction __destruct(){ 69$this->close(); 70 } 71} 7273//测试74try{ 75$fp = new WriteData(‘test.txt‘, ‘w‘); 76$fp->write(‘测试数据‘); 77$fp->close(); 78echo ‘数据写入成功<hr />‘; 79 }catch(FileException $e){ 80echo ‘<h2>出现异常</h2>‘,$e->getMessage(),‘<br>信息详情:‘,$e->getDetails(); 81 }
执行结果:
② 测试 “文件不存在”
把 line :75 的
$fp = new WriteData(‘test.txt‘, ‘w‘);
改为:
$fp = new WriteData();
执行结果:
③ 在当前目录新建文件 test.txt,执行 php 文件,输出:
文件 test.txt:
原文:http://www.cnblogs.com/dee0912/p/4621204.html
内容总结
以上是互联网集市为您收集整理的PHP 错误与异常 笔记与总结(13 )自定义异常类全部内容,希望文章能够帮你解决PHP 错误与异常 笔记与总结(13 )自定义异常类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。