27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
集中处理在代码块中发生的异常。
在代码块中发生了异常直接抛出,代码块中不处理异常,将异常集中起来一起处理。
try:监测代码块 catch:捕获异常 throw:抛出异常 finally:无论有无异常都会执行,可以省略 Exception:异常类
try{ //检测代码 }catch(Exception $ex){ //捕获异常 } finally{ //不论是否有异常,都要执行,finally可以省略 }
案例:
<?php if(isset($_POST['button'])) { try{ $age=$_POST['age']; if($age=='') throw new Exception('年龄不能为空',1001); //抛出异常 if(!is_numeric($age)) throw new Exception('年龄必须是数字',1001); //抛出异常 if(!($age>=10 && $age<=30)) throw new Exception('年龄必须在10-30之间',1002); //抛出异常 echo '您的年龄合适'; }catch(Exception $ex){ //捕获异常 echo '错误信息:'.$ex->getMessage(),'<br>'; echo '错误码:'.$ex->getCode(),'<br>'; echo '文件地址:'.$ex->getFile(),'<br>'; echo '错误行号:'.$ex->getLine(),'<br>'; } finally{ echo '关闭数据库连接'; //不管是否有异常,finally都要执行 } } ?> <form method="post" action=""> 年龄: <input type="text" name="age"> <br /> <input type="submit" name="button" value="提交"> </form>
注意:抛出异常后,try块终止执行,执行权限交给catch块.
比如异常有三个级别异常对应三种处理方式
自定义三种异常即可
所有异常类的父类是Exception,Exception中的方法不允许重写
<?php //自定义空异常类 class MyNullException extends Exception { } //自定义类型异常 class MyTypeException extends Exception { } //自定义范围异常 class MyRangeException extends Exception { } //逻辑代码 if(isset($_POST['button'])) { try{ $name=$_POST['name']; $age=$_POST['age']; if($name=='') throw new MyNullException('姓名不能为空'); if($age=='') throw new MyNullException('年龄不能为空'); if(!is_numeric($age)) throw new MyTypeException('年龄不是数字'); if($age<10 || $age>30) throw new MyRangeException('年龄必须在10-30之间'); echo '姓名:'.$name,'<br>'; echo '年龄:'.$age; }catch(MyNullException $ex){ echo $ex->getMessage(),'<br>'; echo '错误记录在日志中'; }catch(MyTypeException $ex){ echo $ex->getMessage(),'<br>'; echo '发送电子邮件'; }catch(MyRangeException $ex){ echo $ex->getMessage(),'<br>'; echo '给管理员打电话'; } } ?> <form method="post" action=""> 姓名: <input type="text" name="name"> <br /> 年龄: <input type="text" name="age"> <br /> <input type="submit" name="button" value="提交"> </form>