立即注册 找回密码

QQ登录

只需一步,快速开始

第一站长论坛

搜索
1框架
查看: 212|回复: 0

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

[复制链接]
发表于 2019-1-5 08:12 | 显示全部楼层 |阅读模式
本文实例讲述了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才能捕获到。
基本结构:
  1. try{#some codesthrow new Exception("message"[,code[,...]]);}catch(Exception $ex){#some codes}
复制代码
二、PHP 异常基类Exception
类摘要:
  1. 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,抛出异常的行号)。
示例:
  1. [/code]浏览器打印结果:
  2. [indent]Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3
  3. [/indent]关于php中类与对象的基础(如方法调用),具体看类与对象小节。
  4. [b]三、自定义异常类[/b]
  5. 示例:
  6. [code]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; } }
复制代码
抛出与捕获该异常:
  1. try{throw new customException("这是自定义异常。");}catch(customException $ex){#some codes}
复制代码
四、多catch捕获异常
当一个try语句中可能抛出不同的异常时,对应的可有多个catch块捕获不同类型异常。同java中的一些注意点:
1、大异常catch放后面。因为抛出异常时按顺序判断先满足哪个catch,一次仅执行一个catch。
2、执行一次try,最多执行一个catch(发生异常时),即若前面某个catch满足执行,则后面的catch不再考虑。(常见考题)
五、嵌套抛出异常
结构示例:
  1. try{ try{  throw new Exception("第一个异常"); } catch(Exception $e1){  #相关处理  throw new Exception("处理后抛出异常");//再次抛出异常 }}catch(Exception $e2){ #相关处理}
复制代码
六、设置顶层异常处理器
set_exception_handler('myException'):函数设置所有未捕获的异常的处理函数句柄(函数名,此处即myException)。
示例:
[code][/code]结果:
Exception:Uncaught Exception occurred
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP错误与异常处理方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所资助。

免责声明:如果侵犯了您的权益,请联系我们,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站长论坛 ( 闽ICP备16019670号 )|申请友情链接

GMT+8, 2019-3-23 18:19 , Processed in 0.051316 second(s), 22 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc & Style Design

本站提供网上自由讨论使用,所有言论内容来自互联网并不代表本站立场,本站不负任何责任.
如发现有侵权行为,请与我们联系. 我们将立刻从网站上删除,并向所有持版权者致最深歉意.
联系QQ:2837195923

快速回复 返回顶部 返回列表