PHP异常处理定义与使用方法分析


Posted in PHP onJuly 25, 2017

本文实例讲述了PHP异常处理定义与使用方法。分享给大家供大家参考,具体如下:

<?php
//php5提供了基本的异常处理类,可直接使用 ,不需要自己再定义
// class Exception
// {
// protected $message = 'Unknown exception'; // 异常信息
// protected $code = 0; // 用户自定义异常代码
// protected $file; // 发生异常的文件名
// protected $line; // 发生异常的代码行号
// function __construct($message = null, $code = 0);
// final function getMessage(); // 返回异常信息
// final function getCode(); // 返回异常代码
// final function getFile(); // 返回发生异常的文件名
// final function getLine(); // 返回发生异常的代码行号
// final function getTrace(); // backtrace() 数组
// final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
// /* 可重载的方法 */
// function __toString(); // 可输出的字符串
// }
?>
<?php
//定义一个顶级异常处理
function my_exception($e){
  echo "我是顶级异常处理".$e->getMessage();
}
//修改默认的顶级异常处理函数(器)
set_exception_handler("my_exception");
//我们使用异常机制
try{
  addUser("shunping");
  updateUser("xiaoming1");
}
//catch用来 捕获异常, Exception 是异常类(是php定义好一个类)
catch(Exception $e){
  //返回异常信息
  echo "返回异常信息(失败信息) =".$e->getMessage()."<br/>";
  echo "返回异常代码 =".$e->getCode()."<br/>";
  echo "返回发生异常的文件名 =".$e->getFile()."<br/>";
  echo "返回发生异常的代码行号 =".$e->getLine()."<br/>";
  //echo " =".$e->getTrace()."<br/>"; // backtrace() 数组
  //可以继续抛出,这时将会启动php默认的异常处理器来处理
  //你也可以自己定义一个顶级异常处理器,对其进行处理
  throw $e;
}
function addUser($username){
  if($username=="shunping"){
    //添加ok
    echo "ok1";
  }else{
    //添加error
    //抛出异常.
    throw new Exception("添加失败");
  }
}
function updateUser($username){
  if($username=="xiaoming"){
    //正常修改
    echo "ok2";
  }else{
    //平抛出异常
    throw new Exception("修改失败");
  }
}
?>

异常使用的注意事项 :

通过上面的案例,我们可以看出,使用

try{
    //代码
}catch(Exception $e){
    //对异常处理
}

这种方式,可以更有效的控制错误.所以在开发中大量的使用.

1. 当捕获到一个异常后,try{} 块里的后续代码不继续执行.
2. 如果有一个异常发生,但是你没有catch 捕获,则提示一个Uncaught Exception.(系统.)
3. 当catch一个异常,你可以处理,也可以不处理,不处理就可以
throw new Exception("信息");

4. 你可以自定义异常类

class MyException extends Exception {
}

5. 使用多个 catch 代码块可以捕获不同种类的异常

try{
    //代码....
  //第一句话
  //第二句话
}catch(PDOException $e){
    //
}catch(Exception $e){
|
}

6. 也可简单使用 Exception 捕获

代码说明:

<?php
    //定义了一个异常
    class MyException1 extends Exception{
    }
    class MyException2 extends Exception{
    }
    function A(){
       throw new MyException1("a");
    }
    function B(){
       throw new MyException2("b")
    }
    function C(){
       try{
           A();//抛出MyException1
           B();//抛出MyException2
       }catch(Exception1 $e1){
           $e1->getMessage();
       }catch(Exception2 $e2){
           $e2->getMesage();
       }
    }
?>

异常的规则

需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
使用多个 catch 代码块可以捕获不同种类的异常。
可以在 try 代码块内的 catch 代码块中抛出(再次抛出)异常。
简而言之:如果抛出了异常,就必须捕获它。或者使用顶级异常处理器处理。
如果不抛,即使有异常也不会捕获,不会处理

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
php验证码实现代码(3种)
Sep 07 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 PHP
详解PHP素材图片上传、下载功能
Apr 12 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
PHP实现防盗链的方法分析
Jul 25 #PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 #PHP
php 删除指定文件夹的实例讲解
Jul 25 #PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 #PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 #PHP
PHP实现的登录页面信息提示功能示例
Jul 24 #PHP
PHP检查网站是否宕机的方法示例
Jul 24 #PHP
You might like
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Django中login_required装饰器的深入介绍
2017/11/24 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
集团薪酬管理制度
2014/01/13 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
大学生军训感想
2014/02/16 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
班干部演讲稿
2014/04/24 职场文书
图书馆标语
2014/06/19 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
好好学习保证书
2015/02/26 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫