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 相关文章推荐
PHP中的加密功能
Oct 09 PHP
PHP+DBM的同学录程序(3)
Oct 09 PHP
PHP实现网上点歌(二)
Oct 09 PHP
php 表单数据的获取代码
Mar 10 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
smarty中post用法实例
Nov 28 PHP
PHP中的替代语法介绍
Jan 09 PHP
PHP数组和explode函数示例总结
May 08 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
Php+SqlServer实现分页显示
2006/10/09 PHP
php文档更新介绍
2011/07/22 PHP
php获取参数的几种方法总结
2014/02/18 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP的几个常用加密函数
2016/02/03 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
学习python需要有编程基础吗
2020/06/02 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
幼儿园托班开学寄语
2014/01/18 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
社团活动总结范文
2014/04/26 职场文书
消防验收申请报告
2015/05/15 职场文书
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python