php实现的PDO异常处理操作分析


Posted in PHP onDecember 27, 2018

本文实例讲述了php实现的PDO异常处理操作。分享给大家供大家参考,具体如下:

异常处理:

PHP:默认为直接报错

MYSQL:默认为静默模式,错就错,不报错

PDO:默认为静默模式,错就错,不报错

以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)

要使用PDO异常处理,必须满足两个条件

1、需要将错误处理模式变成异常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

2、所有可能出错的语句都必须放到错误捕捉语句块里

try{
   //错误捕捉语句块
   //凡是有可能出现错误的语句都放在这
   //一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面
}catch(PDOExecption $e){
   //将错误信息进行处理
}

例如:

try{
  //连接认证
  $pdo = new PDO('mysql:host=localhost;dbname=project','root','root');
  //设置错误处理模式
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  //组织SQL
  $sql= "update pro_student set s_age = 123 where s_id = 20";
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  //var_dump($e);
  //告诉用户在哪个文件的哪一行出现了什么样的错误
  echo '出现异常:<br/>';
  echo '错误出现的位置:' . $e->getFile() . $e->getLine() . '<br/>';
  echo '错误原因:' . $e->getMessage();
  var_dump($e->getTrace());//获取完整的错误数据
  exit;
}

有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。

语法:throw new PDOException;

$sql = "select * from pro_student where s_id = 20";
$stmt = $pdo->query($sql);
if($stmt->fetchColumn(4) > 100) throw new PDOException; //抛出异常,立马跳转到catch语句块
else{
  echo '没有问题';
}

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

PHP 相关文章推荐
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
PHP使用SOAP调用API操作示例
Dec 25 #PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 #PHP
You might like
php cli 方式 在crotab中运行解决
2010/02/08 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
Yii中表单用法实例详解
2016/01/05 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
koa源码中promise的解读
2018/11/13 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
详解python3中socket套接字的编码问题解决
2017/07/01 Python
python编写Logistic逻辑回归
2020/12/30 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis