PHP异常处理以及自定义顶级异常处理器
2016-05-31 17:52
791 查看
自定义两个方法,添加用户addUser()和修改用户updateUser(),给一个用户名的参数;
通常的做法:
这样的弊端就是代码冗余,如果再添加一个方法,也需要同样的验证,则需要修改function A()的判断条件
PHP 5 提供了一种新的面向对象的错误处理方法。
案例如下
当addUser()抛出一个异常,则catch就会去捕获这个异常。
PHP还提供了一个顶级异常处理器处理的方法
案例如下:
运行结果:
这里的 My_expection1 和 My_expection2 是开发者自定义的异常处理函数,既顶级异常处理器,只有当程序中没有函数来处理异常才有顶级异常处理器来处理异常,如果没有定义顶级异常处理器,则由系统默认的异常处理器来处理异常。
通常的做法:
function A(){ $res1=addUser('yonghu'); $res2=updateUser('小米'); if ($res1 && $res2) { echo "成功"; }else{ echo "失败"; } } A(); function addUser($username){ if ($username=='yonghu') { return true; }else{ return false; } } function updateUser($username){ if($username=='小米'){ return true; }else{ return false; } }
这样的弊端就是代码冗余,如果再添加一个方法,也需要同样的验证,则需要修改function A()的判断条件
PHP 5 提供了一种新的面向对象的错误处理方法。
案例如下
try{ addUser("小明"); updateUser("小米"); } //catch 捕获Exception 是异常类 是php定义好的一个类 catch (Exception $e){ echo "失败信息=".$e->getMessage(); } function addUser($username){ if ($username=="小米") { }else{ throw new Exception("添加失败"); } } function updateUser($username){ if ($username=="小米") { }else{ throw new Exception("修改失败"); } }
当addUser()抛出一个异常,则catch就会去捕获这个异常。
PHP还提供了一个顶级异常处理器处理的方法
案例如下:
class My_Exception1 extends Exception{ } class My_Exception2 extends Exception{ } function A($a){ if($a>20){ throw new My_Exception1("a"); } } function B($b){ if ($b<15) { throw new My_Exception2("b"); } } function C(){ try{ A(10); B(10); }catch(My_Exception1 $e1){ echo "错误信息:".$e1->getMessage(); }catch(My_Exception2 $e2){ echo "错误信息:".$e2->getMessage(); } } C();
运行结果:
错误信息:b
这里的 My_expection1 和 My_expection2 是开发者自定义的异常处理函数,既顶级异常处理器,只有当程序中没有函数来处理异常才有顶级异常处理器来处理异常,如果没有定义顶级异常处理器,则由系统默认的异常处理器来处理异常。
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- 如何优雅地处理前端异常?
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- C#异常处理详解