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 相关文章推荐
优化使用mysql存储session的php代码
Jan 10 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
vue-cli 首屏加载优化问题
2018/11/06 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
人工神经网络算法知识点总结
2019/06/11 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python中关于浮点数的冷知识
2019/09/22 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
政法大学毕业生自荐信范文
2014/01/01 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
双拥工作宣传标语
2014/06/26 职场文书
雷锋之歌观后感
2015/06/10 职场文书
销售人员管理制度
2015/08/06 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书