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防盗链的常用方法小结
Jul 02 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
24条货真价实的PHP代码优化技巧
Jul 28 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
实例化php类时传参的方法分析
Jun 05 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 PHP
PHP autoload使用方法及步骤详解
Sep 05 PHP
PHP加MySQL消息队列深入理解
Feb 27 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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中将汉字转换成拼音的函数代码
2012/09/08 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
javascript常用的方法整理
2015/08/20 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python SOCKET编程基础入门
2021/02/27 Python
毕业生自我推荐
2013/11/04 职场文书
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
自我鉴定书
2014/03/24 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
春节超市活动方案
2014/08/14 职场文书
受资助学生感谢信
2015/01/21 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
python基础之文件处理知识总结
2021/05/23 Python