PHP异常类及异常处理操作实例详解
本文实例讲述了PHP异常类及异常处理操作。分享给大家供大家参考,具体如下
异常处理归类于错误处理,PHP从5.1.0开始增加了Exception异常处理类。
一、异常处理
PHP 异常处理与Java相似,都使用try、throw、catch语句,发生异常时代码。如果异常没有被捕获,而且又没用使用 set_exception_handler()
作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。
1、try
用于可能发生异常的代码块。
2、throw
规定如何触发(trigger)异常,用于抛出异常。每一个throw必须对应至少一个catch。
3、catch
捕获异常,并创建包含异常信息的对象。
说明姑且认为php的异常必须throw才能捕获到。
基本结构
try{ #some codes throw new Exception("message"[,code[,...]]); } catch(Exception $ex){ #some codes }
二、PHP 异常基类Exception
类摘要
Exception { / 属性 / protected string $message ; protected int $code ; protected string $file ; protected int $line ; / 方法 / public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] ) final public string getMessage ( void ) final public Exception getPrevious ( void ) //获取异常链中前一个异常 final public int getCode ( void ) final public string getFile ( void ) final public int getLine ( void ) final public array getTrace ( void ) //获取异常追踪信息 final public string getTraceAsString ( void ) //字符串方式返回异常追踪信息 public string __toString ( void ) final private void __clone ( void ) }
说明
由该基类可看出,php异常对象主要包含异常的文本信息(message)、异常代码/代号(code,应该是用于开发人员标识)、异常发生的文件(file,即发生异常的php文件)、异常发生的具体位置(line,抛出异常的行号)。
示例
<?php try { throw new Exception("Some error message", 30);//抛出异常,设置异常代号为30 } catch(Exception $e) { echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine(); } ?>
浏览器打印结果
Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3
关于php中类与对象的基础(如方法调用),具体看类与对象小节。
三、自定义异常类
示例
class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address'; return $errorMsg; } }
抛出与捕获该异常
try{ throw new customException("这是自定义异常。"); } catch(customException $ex){ #some codes }
四、多catch捕获异常
当一个try语句中可能抛出不同的异常时,对应的可有多个catch块捕获不同类型异常。同java中的一些注意点
1、大异常catch放后面。因为抛出异常时按顺序判断先满足哪个catch,一次仅执行一个catch。
2、执行一次try,最多执行一个catch(发生异常时),即若前面某个catch满足执行,则后面的catch不再考虑。(常见考题)
五、嵌套抛出异常
结构示例
try{ try{ throw new Exception("第一个异常"); } catch(Exception $e1){ #相关处理 throw new Exception("处理后抛出异常");//抛出异常 } } catch(Exception $e2){ #相关处理 }
六、设置顶层异常处理器
set_exception_handler('myException')
函数设置所有未捕获的异常的处理函数句柄(函数名,此处即myException)。
示例
<?php function myException($exception) { echo "<b>Exception:</b> " , $exception->getMessage(); } set_exception_handler('myException'); throw new Exception('Uncaught Exception ourred'); ?>
结果
ExceptionUncaught Exception ourred
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程