• 售前

  • 售后

热门帖子
入门百科

PHP异常类及异常处置处罚操作实例详解

[复制链接]
爰无悔2017 显示全部楼层 发表于 2021-10-26 13:04:06 |阅读模式 打印 上一主题 下一主题
本文实例陈诉了PHP非常类及非常处置惩罚操纵。分享给各人供各人参考,具体如下:
非常处置惩罚归类于错误处置惩罚,PHP从5.1.0开始增长了Exception非常处置惩罚类。
一、非常处置惩罚
PHP 非常处置惩罚与Java相似,都使用try、throw、catch语句,发生非常时代码。如果非常没有被捕获,而且又没用使用
  1. set_exception_handler()
复制代码
作相应的处置惩罚的话,那么将发生一个严肃的错误(致命错误),而且输出 "Uncaught Exception" (未捕获非常)的错误消息。
1、try:
用于可能发生非常的代码块。
2、throw:
规定如何触发(trigger)非常,用于抛出非常。每一个throw必须对应至少一个catch。
3、catch:
捕获非常,并创建包含非常信息的对象。
说明:姑且以为php的非常必须throw才气捕获到。
根本结构:
  1. try{
  2. #some codes
  3. throw new Exception("message"[,code[,...]]);
  4. }
  5. catch(Exception $ex){
  6. #some codes
  7. }
复制代码
二、PHP 非常基类Exception
类摘要:
  1. Exception {
  2. /* 属性 */
  3. protected string $message ;
  4. protected int $code ;
  5. protected string $file ;
  6. protected int $line ;
  7. /* 方法 */
  8. public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
  9. final public string getMessage ( void )
  10. final public Exception getPrevious ( void )  //获取异常链中前一个异常
  11. final public int getCode ( void )
  12. final public string getFile ( void )
  13. final public int getLine ( void )
  14. final public array getTrace ( void )   //获取异常追踪信息
  15. final public string getTraceAsString ( void )  //字符串方式返回异常追踪信息
  16. public string __toString ( void )
  17. final private void __clone ( void )
  18. }
复制代码
说明:
由该基类可看出,php非常对象重要包含非常的文本信息(message)、非常代码/代号(code,应该是用于开辟人员标识)、非常发生的文件(file,即发生非常的php文件)、非常发生的具体位置(line,抛出非常的行号)。
示例:
  1. <?php
  2. try {
  3. throw new Exception("Some error message", 30);//抛出异常,设置异常代号为30
  4. } catch(Exception $e) {
  5. echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
  6. }
  7. ?>
复制代码
浏览器打印结果:
  1. Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3
复制代码
关于php中类与对象的基础(如方法调用),具体看类与对象末节。
三、自界说非常类
示例:
  1. class customException extends Exception
  2. {
  3. public function errorMessage()
  4. {
  5. //error message
  6. $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
  7. .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
  8. return $errorMsg;
  9. }
  10. }
复制代码
抛出与捕获该非常:
  1. try{
  2. throw new customException("这是自定义异常。");
  3. }
  4. catch(customException $ex){
  5. #some codes
  6. }
复制代码
四、多catch捕获非常
当一个try语句中可能抛出差别的非常时,对应的可有多个catch块捕获差别类型非常。同java中的一些注意点:
1、大非常catch放反面。因为抛出非常时按顺序判断先满意哪个catch,一次仅实行一个catch。
2、实行一次try,最多实行一个catch(发生非常时),即若前面某个catch满意实行,则反面的catch不再思量。(常见考题)
五、嵌套抛出非常
结构示例:
  1. try{
  2. try{
  3.   throw new Exception("第一个异常");
  4. }
  5. catch(Exception $e1){
  6.   #相关处理
  7.   throw new Exception("处理后抛出异常");//再次抛出异常
  8. }
  9. }
  10. catch(Exception $e2){
  11. #相关处理
  12. }
复制代码
六、设置顶层非常处置惩罚器
  1. set_exception_handler('myException')
复制代码
:函数设置全部未捕获的非常的处置惩罚函数句柄(函数名,此处即myException)。
示例:
  1. <?php
  2. function myException($exception)
  3. {
  4. echo "<b>Exception:</b> " , $exception->getMessage();
  5. }
  6. set_exception_handler('myException');
  7. throw new Exception('Uncaught Exception occurred');
  8. ?>
复制代码
结果:
  1. Exception:Uncaught Exception occurred
复制代码
更多关于PHP相关内容感爱好的读者可查看本站专题:《PHP错误与非常处置惩罚方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操纵本领大全》、《PHP根本语法入门教程》、《php面向对象程序计划入门教程》、《php+mysql数据库操纵入门教程》及《php常见数据库操纵本领汇总》
渴望本文所述对各人PHP程序计划有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作